Веб-маршрут Laravel или API-маршруты для приложений с интерфейсом VueJS - PullRequest
0 голосов
/ 11 сентября 2018

В настоящее время мы разрабатываем многостраничное приложение, использующее VueJS в качестве основы Javascript Framework, Element.io в качестве CSS Framework.

Мы не раскрываем какие-либо веб-сервисы или что-то в этом роде.

Наше приложение отзывчиво - пользователи могут создавать записи, используя настольные и мобильные устройства.

Нужно ли создавать маршруты API или достаточно веб-маршрутов? Есть ли какой-нибудь сценарий, о котором вы можете подумать, что мне нужен маршрут API?

1 Ответ

0 голосов
/ 11 сентября 2018

Веб-маршруты предназначены для представлений внешнего интерфейса, где маршруты API будут использоваться для вызовов API. Вам определенно нужно разделить их, поскольку VueJS будет выполнять вызовы вашего API с помощью JSON и получать ответ JSON в ответ с кодами ошибок для обработки ваших ошибок. эффективно.

Веб-контроллер:

return view('blade_file')->with(compact('var1', 'var2'));

Если вы установите здесь коды ошибок, он покажет вам файл блейда для этого кода ошибки, например. 404 покажет вам файл представления блейда на ./resources/views/errors/404.blade.php, но ваше приложение будет ожидать ответ JSON вместо ответа HTML.

Контроллер API:

return response()->json(compact('var1', 'var2'), 200); // success

return response()->json(['error' => 'bad request'], 400); // bad request

Если вы установите здесь коды ошибок, вы все равно получите ответ JSON, только с указанным кодом ошибки.

Вывод:

Разделите ваш веб-интерфейс и бэкэнд с API и веб-маршрутами, так как запросы / ответы обрабатываются по-разному.

Примечания:

  • Не забудьте добавить свой токен CSRF в заголовок при выполнении запросов ajax / axios к этому API.
  • Убедитесь, что ваше промежуточное программное обеспечение api. Если API разрешает только аутентифицированным пользователям, вам понадобится промежуточное программное обеспечение auth:api и вам потребуется Laravel Passport .
  • Не забудьте добавить пространство имен Api к вашим маршрутам API, либо в файле routes/api.php, либо в app/Providers/RouteServiceProvider.php.
...