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