Laravel 5.3 新特性系列 —— 路由文件及路径修改

laravel-5-3-new-features-updates

1、回顾Laravel 5.2中路由的修改

在 Laravel 5.2 的routes.php中我们可以看到路由被分割成两个路由群组:webapi,这样做的原因是基于中间件群组的理念:开箱即可拥有webapi两组路由。

web路由组提供了普通web用户所需的所有功能特性:如session、cookie、CSRF防护等等,相比之下,api路由组更加轻量级,只提供了throttle中间件,以便提供无状态的REST API

2、Laravel 5.3 中路由的修改

在Laravel 5.3中,app/Http/routes.php文件被移动到routes目录下,并且被分割成两个文件:web.phpapi.php。你可能已经猜到了,web.php中的路由应用了web中间件组,而api.php中的路由应用了api中间件组。

这样做有一些好处,首先,我们实现了web路由和api路由的分离,其次,可以在应用级层面组织多个路由文件,最后,将routes移出app目录,对新手而言,可以更快访问到routes目录,并且让app目录完全成为PSR-4自动加载的目录。

如果你想要自定义或者添加自己的独立路由文件,参考App\Providers\RouteServiceProvider获取思路:

...
public function map()
{
    $this->mapWebRoutes();
    $this->mapApiRoutes();
    //
}

protected function mapWebRoutes()
{
    Route::group([
        'namespace' => $this->namespace, 
        'middleware' => 'web',
    ], function ($router) {
        require base_path('routes/web.php');
    });
}

protected function mapApiRoutes()
{
    Route::group([
        'middleware' => ['api', 'auth:api'],
        'namespace' => $this->namespace,
        'prefix' => 'api',
    ], function ($router) {
        require base_path('routes/api.php');
    });
}

很简单吧,参照这段代码应该可以很轻松创建自己独立的路由文件。

学院君 has written 698 articles

资深PHP工程师,Laravel学院院长

3 thoughts on “Laravel 5.3 新特性系列 —— 路由文件及路径修改

  1. Elf Sundae says:

    哎呀,影响所见略同 我一直是这么干的。 不过我是放到app目录下了,并且自动配置protected $appRoutes = [ 'site' => 'web', 'admin' => 'web', 'api' => 'api-cookie', ];protected function mapAppRoutes(Router $router) { foreach ($this->appRoutes as $key => $middleware) { $namespace = $this->namespace.'\'.studly_case($key); $middleware || $middleware = []; $as = $key.'.'; $router->group( compact('namespace', 'middleware', 'as'), function ($router) use ($key) { require app_path('Http/Routes/'.$key.'.php'); }); } }

发表评论

标记为*的字段是必填项(邮箱地址不会被公开)

你可以使用这些HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>