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);
→ Ссылка