使用其他中间件添加 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 中使用混乱的组包装器