Laravel多路由檔案,路由分組

SHUIPING_YANG發表於2018-03-10

現在用的是laravel 5.5,不管是api介面還是web直接渲染,都能很好的應對,api端的登陸驗證可以使用passport,web短的直接使用自帶的,這個大問題解決了就可以狠狠地放下dingo和jwt了,他們已經out了。今天來說說laravel的路由分割。在laravel5.5中,路由檔案分為兩個,一個web.php一個api.php,你想象一下,如果需要進行版本迭代,你的路由檔案是不是會很龐大,而且不同版本的寫在一起,這樣本身就會很亂。既然laravel已經分成了兩個路由檔案,那肯定可以裂變更多的出來!要是可以不同的版本,都來個路由檔案,那就太好了!
呵呵,你別說,還真的可以這麼幹!我們看看provider目錄下面,那些個檔案都是和服務啟動相關的,不能瞎改,我們進去會發現有這個檔案,他就是啟動路由的。

D:\phpStudy\WWW\BCCKidV1.0\app\Providers\RouteServiceProvider.php

一進去就看到這個程式碼,這個是不是引起了你的興趣?看到沒?那個地方還特意劃了兩個斜槓,意思是隻要你願意,還可以使勁加。

public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    //
}

繼續往下看,就看到下面兩個方法,這一看應該都明白了吧?直接在routes下面加你想要的路由檔案,然後寫到這裡來就行了,還可以定義字首和中介軟體。是不是爽歪了?

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

protected function mapApiRoutes()
{
    Route::prefix('api')
         ->middleware('api')
         ->namespace($this->namespace)
         ->group(base_path('routes/api.php'));
}

laravel越來越懂程式設計師了,大愛!


更新一下,在laravel5.5.43裡面,我嘗試新增多個路由檔案的時候,一直報下面這個錯誤,原因是

Route::prefix('api')得到的是一個string,正確的做法是把prefix放到middleware的後面去
Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to a member function middleware() on string

相關文章