Получить URL-адрес API по имени маршрута в Laravel 5.5

Есть ли способ указать префикс при получении URL-адреса маршрута по его имени в Laravel 5.5? Например,

In routes/web.php

Route::resource('users', 'UserController', ['only' => 'index', 'create', 'edit']);

In routes/api.php

Routes::resource('users', 'UserController', ['only' => 'index', 'store', 'update', 'destroy']);

Оба маршрута к методам индекса имеют имя users.index, что подтверждено при вызове php artisan route:list. Однако URL-адрес веб-маршрута - /users, а URL-адрес маршрута api - /api/users.

Чтобы получить URL-адрес веб-маршрута, я могу сделать route('users.index'). Есть ли способ получить URL-адрес для маршрута api, используя имя маршрута?


person Erin    schedule 16.11.2017    source источник


Ответы (2)


Вы можете присвоить маршрутам контроллера ресурсов префикс с помощью параметра as:

Route::resource('users', 'UserController', [
    'as' => 'your.prefix',
    'only' => ['index', 'store', 'update', 'destroy'],
]);
person ceejayoz    schedule 16.11.2017
comment
Спасибо тебе за это. Я знаю, что могу давать собственные имена, но я искал решение, не меняя API вообще. - person Erin; 24.11.2017
comment
Привет. Заметил ошибку в ответе, из-за которой у меня некоторое время болела голова :) Исправьте, пожалуйста: 'only' => ['index', 'store', 'update', 'destroy'] - person user8555937; 11.11.2019

В routes/api.php оберните все маршруты префиксом api:

Route::name('api.')->group(function () {
  ...
});

Затем в RouteServiceProvider,

Route::prefix('api')
         ->middleware('api')
         ->namespace($this->namespace.'\Api')
         ->group(base_path('routes/api.php'));
person Erin    schedule 31.03.2019
comment
Имя может входить в RouteServiceProvider, поэтому оболочка в routes/api.php не нужна. - person None; 25.03.2021