Я хочу сделать первое приложение API в Laravel. Я не знаю, как лучше всего это сделать, я объясню, что я пытаюсь сделать, но, пожалуйста, не стесняйтесь давать ответы, как сделать это по-другому.
Я не хочу, чтобы весь мой интерфейс был написан в javascript и проанализировал вывод JSON API с помощью angular.js или чего-то подобного. Я хочу, чтобы приложение Laravel создавало HTML-представления. Я пытаюсь пойти по пути, имея два контроллера для API и один для Интернета. Для показа действия пользователя мои 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 User Controller
$response = $this->show($id);
return View::make('user.view')->with('data', $response->getData());
}
}
В WebUserController
я могу получить json-контент ответа с getData()
, но я не могу получить заголовки и код состояния (они являются защищенными свойствами Illuminate\Http\JsonResponse
).
Я думаю, что мой подход может быть не самым лучшим, поэтому я открыт для предложений, как сделать это приложение.
EDIT. На вопрос, как получить заголовки и статус ответа, ответил Дрю Льюис, но я все еще думаю, что может быть лучший способ, как это сделать