json в web роутах laravel - good practice?
Как известно, у Laravel есть API, а есть обычные web-маршруты. К примеру, если я формы отправляю через ajax, то логичнее было бы передавать данные на сервер/обратно в json. По логике это похоже на API, но в моем приложении его писать не планируется.
Вопрос к знатокам: является ли хорошим решением возвращать json из контроллера, который не является API-ресурсом? Например, метод update просто возвращает "success", без дальнейшего редиректа.
Ответы (1 шт):
Автор решения: Dmitrii Sedov
→ Ссылка
Для этого можно возвращать в виде:
return $request->wantsJson() ? response()->json(...) : back() // или view или redirect и т.д;
Так же, чтобы не дублировать код в каждом контроллере и методе, можно с помощью макросов расширить Response фасад. В методе boot сервис провайдера:
Response::macro('customResponse', function ($data) {
return request()->wantsJson() ? response()->json($data) : back();
});
далее в контроллере вызываете:
return response()->customResponse($data);