Я работаю над проектом Laravel, где мне нужно написать код для веб-приложения, а также API-интерфейсы с той же бизнес-логикой.
Поскольку в бизнес-логике нет различий, я думаю написать код в чертах, использовать его на разных контроллерах и отправить ответ в соответствии с заголовками запроса.Таким образом, один и тот же код будет использоваться как для веб-приложений, так и для мобильных приложений.
Используя черты, я могу писать разные маршруты и легко создавать разные контроллеры для веб-интерфейсов и API.
Например
In web.php
Route::get('users','UsersController@index');
In api.php
Route::get('users','Api\UsersController@index');
И затем, используя черту, я могу написать только одну функцию с именем index или любое другое имя, как показано ниже.На данный момент я проверяю, хочет ли запрос json, используя метод wantJson () класса Request.
public function index(Request $request){
$users = User::all();
if($request->wantsJson()){
return response()->json(['users',$users]);
}
return view('uses.index',compact('users'));
}
Есть ли лучший способ сделать это?