Лучшая практика при создании как RESTful API, так и веб-приложения

Итак, я разрабатываю проект с использованием Laravel 5.7, и я хочу включить RESTful API, чтобы мобильная версия взаимодействовала с приложением и, конечно же, с самим веб-приложением.

Мой вопрос в том, что лучше всего использовать в таких случаях, когда дело доходит до маршрутизации и контроллеров, я прочитал некоторые предложения здесь и в других блогах и запутался, некоторые предложили мне объявить один файл маршрутизации для использования веб-приложением и API и добавляю идентификатор для например ("Интернет" и "мобильный"), и на его основе я возвращаю представление или данные JSON, другие предлагали разделить маршрутизацию (api и web), но указывать их на те же методы контроллера, что, по их мнению, лучше, чем первое предложение.

Ценю вашу помощь.

Laravel уже разделяет маршруты на веб-группы и группы API. Вы должны прочитать документацию, чтобы увидеть различия, Laravel хорошо документирован. Лучшие практики основаны на мнениях и не по теме для SO.

Devon 19.10.2018 13:01

Я использую подход модели Fat Model. Поместите всю реальную логику внутрь моделей, а контроллеры просто укажут на эти модели. Мне также нравится помещать все свои маршруты в файл API.php и использовать паспорт для аутентификации. Вы можете делать все в Интернете с помощью проверки токена CSRF, но мне просто нравится повышенная безопасность с помощью паспорта, и ее довольно легко настроить из коробки. Логика CRUD также остается в контроллере, просто проще и нет причин создавать для нее новую модель. Кроме того, читайте документацию и получайте удовольствие.

Brad Goldsmith 19.10.2018 14:09

@Devon да, я знаю это и читал документы, но я запутался, когда увидел, что другие используют разные подходы, но в любом случае спасибо за ваш ответ.

ali hussein 19.10.2018 16:35

@Egretos проверит это, спасибо.

ali hussein 19.10.2018 16:36

@BradGoldsmith Я следовал этому подходу, я выполнил всю логику для веб и api в контроллерах и настроил файл маршрута API.php, но проблема, с которой я сталкиваюсь, заключается в использовании части веб-приложения, и я хочу, чтобы представление было вернул вместо объекта JSON, я попытался вернуть представление ("имя представления", компактный ("данные") и получил представление, но URL-адрес не изменился.

ali hussein 19.10.2018 16:40
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
6
425
1

Ответы 1

Laravel отделяет маршруты API от веб-маршрутов. Веб-маршруты находятся в файле routes/web.php. Маршруты API находятся в файле routes/api.php.

Что может раздражать, так это отделение логики части API от логики веб-части. Здесь решение по-прежнему простое. Что я делаю, так это создаю папку, которую я вызываю API в app/Http/Controllers; все контроллеры, которые я помещаю в эту папку, находятся в пространстве имен App\Http\Controllers\API. В соответствующем файле маршрута все, что вам нужно сделать, это добавить флаг API\ перед именем контроллера.

Надеюсь, мой ответ поможет.

Спасибо !

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

ali hussein 19.10.2018 16:44

Да, я с вами не согласен, но сложность будет заключаться в различии между API и веб-возвратами.

Steve 19.10.2018 17:03

@alihussein Не должно быть причин указывать веб-маршрут и маршрут API на один и тот же метод. Если вы обнаружите, что делаете это, вы либо вкладываете слишком много логики в свои контроллеры, либо вам следует подумать об использовании собственного API вместо создания избыточных методов.

Devon 19.10.2018 17:13

Другие вопросы по теме