Как спроектировать маршруты при работе с Laravel API вместо того, чтобы возвращать представления Laravel? - PullRequest
0 голосов
/ 07 сентября 2018

До сих пор я создавал приложения Laravel и Django, которые возвращают представления или шаблоны из серверной части. Пока все хорошо.

Однако сейчас я создаю Laravel API, который вызывается из кода AMP внешнего интерфейса.

По старинке я делаю это в Laravel: От web.php

Route::get('/', function () {
    return view('welcome');
});

Или я могу вернуть вид из контроллера.

Однако, если приложение Laravel - это API, который возвращает JSON, как я могу создавать URL-адреса?

Как правило, если кто-то нажимает на главной странице ссылку, которая должна перейти в профиль пользователя, скажем:

/user/{id}

Где я буду решать, как будет выглядеть этот URL-адрес и какую конечную точку вызывать?

Ответы [ 3 ]

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

Я наконец обернулся вокруг этого. По крайней мере, я так думаю.

в web.php У меня есть набор Closures с URL-адресами, которые я хочу. Эти замыкания возвращают представления без данных. Похоже на это:

Route::get('/', function () {
    return view('welcome');
});

А затем в представлении я вызываю конечные точки API, как указано в api.php, для отображения данных, которые мне нужны в представлении.

// List activities
Route::get('activities', 'ActivityController@index');
0 голосов
/ 07 сентября 2018

Laravel 5.3 и выше предоставляет отдельный файл маршрутов routes/api.php, где вы можете написать все маршруты, относящиеся к вашим запросам API.

для контроллера просто создайте отдельную папку в папке контроллера с именем «Api» и создайте в ней контроллер, связанный с API.

и оттуда вы можете написать функцию для соответствующих маршрутов. и вернуть JSON как return response()->json(['data'=>$data]);

Или вы можете использовать пакет https://github.com/nWidart/laravel-modules для создания отдельного модуля API в laravel.

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

Вы можете использовать тот же синтаксис маршрута, но вместо возврата вида вы возвращаете json response .

Route::get('api/user', function () {
    $data = ['status' => 'success', 'data' => 'stuff'];
    return response()->json($data);
});

Взгляните на документацию с ответами для всех доступных типов ответов.

...