我想在Laravel中創建一個API第一個應用程序。我不知道最佳做法是什麼,我會解釋我正在嘗試做什麼,但請隨時以不同的方式回答如何做到這一點。如何在Laravel中創建REST API第一個Web應用程序
我不希望我所有的前端都用javascript編寫,並用angular.js或類似的東西解析API的JSON輸出。我想讓我的Laravel應用程序生成HTML視圖。我正試圖走上兩個控制器,一個用於API,另一個用於Web。爲展示用戶操作我的routes.php文件是這樣的:
# the web controller
Route::controller('user', 'WebUserController');
# the api controller
Route::group(array('prefix' => 'api'), function() {
Route::resource('user', 'UserController');
});
所以/user
會帶我去WebUserController
和/api/user
會帶我去UserController
。現在我想把我所有的邏輯放在API UserController
中,並從WebUserController
中調用它的動作。這是對他們倆的代碼:
class UserController extends BaseController
{
public function show($id)
{
$user = User::find($id);
return Response::json(array('success'=>true,'user'=>$user->toArray()));
}
}
class WebUserController extends UserController
{
public function getView($id)
{
# call the show method of the API's User Controller
$response = $this->show($id);
return View::make('user.view')->with('data', $response->getData());
}
}
在WebUserController
我能夠獲得與getData()
響應的JSON的內容,但我不能夠獲得頭和狀態碼(保護它們的屬性的Illuminate\Http\JsonResponse
)。
我認爲我的方法可能不是最好的,所以我接受建議如何使這個應用程序。
編輯:現在的問題是如何讓頭和響應的狀態已經被Drew Lewis回答,但我仍然認爲,有可能是一個更好的方法如何設計這個
馬丁你好,我有同樣的問題要在Laravel 5.1中解決。那麼,你是如何實施的?你有沒有使用Repositor模式? – Ashish
@Ashish,當我問這個時,我和Nyan的答案一起去了。這似乎是最簡單的解決方案,並做了我所需要的。雖然我還沒有與Laraval 5.1合作,但不知道自那以後發生了什麼變化。 –
您是否爲Web和API創建單獨的控制器,如果是的話,您是如何設法防止代碼重複的,我想知道存儲庫設計模式,我們只能將DB邏輯移出控制器 – Ashish