使用其他中间件添加 api-routes 并保留默认的 Web 中间件
自 Laravel 版本 5.2.31 以来,Web 中间件默认应用于 RouteServiceProvider( https://github.com/laravel/laravel/commit/5c30c98db96459b4cc878d085490e4677b0b67ed)
在 app / Providers / RouteServiceProvider.php 中,你将找到以下函数,这些函数在 app / Http / routes.php 中的每个路径上应用中间件。
public function map(Router $router)
{
$this->mapWebRoutes($router);
}
// ...
protected function mapWebRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace, 'middleware' => 'web',
], function ($router) {
require app_path('Http/routes.php');
});
}
如你所见,应用了中间件 Web。你可以在这里改变它。但是,你也可以轻松添加另一个条目,以便将你的 api 路由放到另一个文件中(例如 routes-api.php)
public function map(Router $router)
{
$this->mapWebRoutes($router);
$this->mapApiRoutes($router);
}
protected function mapWebRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace, 'middleware' => 'web',
], function ($router) {
require app_path('Http/routes.php');
});
}
protected function mapApiRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace, 'middleware' => 'api',
], function ($router) {
require app_path('Http/routes-api.php');
});
}
有了这个,你可以轻松地从应用程序路径中分离 api 路由,而不会在 routes.php 中使用混乱的组包装器