У меня есть один маршрут, определенный как это:Laravel находчивый контроллер - дифференцировать вызов API из браузера
Route::resource('problem', 'ProblemController');
В тот момент я POST
к /problem
, метод [email protected]
увольняют.
Теперь я хочу вернуть ответ JSON, если это вызов API или представление (или, возможно, перенаправление), если я нахожусь на «веб-стороне» моего приложения. Как я могу подойти к этой проблеме?
Должен ли я создавать отдельные контроллеры? Должен ли я (в каждом методе/контроллере) определять тип запроса и отвечать соответствующим образом? Должен ли я использовать middlewares? Группы маршрутов? Отдельное приложение?
Основная цель состоит в том, чтобы иметь несколько типов приложений (API + versioning + web) в одном пакете, но совместно использовать бизнес-логику, модели и большую часть кода (чтобы избежать повторения).
Я использую Laravel 5.2.
Спасибо!
чек '$ _SERVER [ 'HTTP_X_REQUESTED_WITH'] '- это может быть фальшивым, но я предполагаю, что это не проблема безопасности, просто удобная одна – Steve
Эта переменная устанавливается, когда запрос выполняется с использованием Ajax-вызова, поэтому он не будет работать, если вы выполните запрос другим способом, например используя завиток или некоторый клиент для отдыха. Другое дело, что суперклассы, такие как $ _SERVER или $ _GET, никогда не должны быть доступны напрямую при использовании фреймворка, поскольку он обертывает их в ряд удобных классов/методов. –