Laravel 5.3 新特性系列 —— 路由文件及路径修改
1、回顾Laravel 5.2中路由的修改
在 Laravel 5.2 的routes.php
中我们可以看到路由被分割成两个路由群组:web
和api
,这样做的原因是基于中间件群组的理念:开箱即可拥有web
和api
两组路由。
web
路由组提供了普通web用户所需的所有功能特性:如session、cookie、CSRF防护等等,相比之下,api
路由组更加轻量级,只提供了throttle中间件,以便提供无状态的REST API。
2、Laravel 5.3 中路由的修改
在Laravel 5.3中,app/Http/routes.php
文件被移动到routes
目录下,并且被分割成两个文件:web.php
和api.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'); }); }
很简单吧,参照这段代码应该可以很轻松创建自己独立的路由文件。
3 Comments
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'); }); } }