通过 Laravel 5.5 中的路线名称获取 API URL

Get an API URL by route name in Laravel 5.5

有没有办法在Laravel 5.5中通过名称获取路由URL时指定前缀?例如,

routes/web.php

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

routes/api.php

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

索引方法的两个路由都具有名称 users.index,正如调用 php artisan route:list 时确认的那样。但是,网络路由的 URL 是 /users 而 api 路由的 URL 是 /api/users

获取网络路由URL,我可以route('users.index')。有没有办法使用路由名称获取 api 路由的 URL?

您可以通过 as 选项给资源控制器的路由一个前缀:

Route::resource('users', 'UserController', [
    'as' => 'your.prefix',
    'only' => ['index', 'store', 'update', 'destroy'],
]);

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'));