前言
大家可能沒有注意到, 在 Laravel 4 以及更老版本中, 路由邏輯是性能上的一個瓶頸--特別是對于有很多路由定義的應用而言. 一個只有幾百條路由定義的 Laravel 站點, 框架光注冊路由就需要半秒多的時間. 不過以后不用擔心這個問題了, 因為 Laravel 5 引入了 路由緩存(route caching), 可以大大優(yōu)化路由的性能(閉包方式定義的路由不能緩存, 所以該把所有的閉包路由定義都移到控制器中了).
1、回顧Laravel 5.2中路由的修改
在 Laravel 5.2 的routes.php中我們可以看到路由被分割成兩個路由群組:web和api,這樣做的原因是基于中間件群組的理念:開箱即可擁有web和api兩組路由。
web路由組提供了普通web用戶所需的所有功能特性:如session、cookie、CSRF防護等等,相比之下,api路由組更加輕量級,只提供了throttle中間件,以便提供無狀態(tài)的REST API。
2、Laravel 5.3 中路由的修改
在Laravel 5.3中,app/Http/routes.php文件被移動到routes目錄下,并且被分割成兩個文件:web.php和api.php。你可能已經(jīng)猜到了,web.php中的路由應用了web中間件組,而api.php中的路由應用了api中間件組。
這樣做有一些好處,首先,我們實現(xiàn)了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');
});
}
總結
很簡單吧,參照這段代碼應該可以很輕松創(chuàng)建自己獨立的路由文件。以上就是修改Laravel5.3中路由文件及路徑的全部內容,希望本文對大家學習Laravel5.3有所幫助。