Laravel路由器的几点说明

- 1 min

Laravel路由器

一、路由闭包

绝不 在路由配置文件里书写『闭包路由』或者其他业务逻辑代码,因为一旦使用将无法使用路由缓存

路由器要保持干净整洁,绝不 放置除路由配置以外的其他程序逻辑。

二、Restful 路由

必须 优先使用 Restful 路由,配合资源控制器使用。

三、resource 方法正确使用

一般资源路由定义:

Route::resource('photos', 'PhotosController');

使用 resource 方法时,如果仅使用到部分路由,必须 使用 only 列出所有可用路由:

Route::resource('photos', 'PhotosController', ['only' => ['index', 'show']]);

绝不 使用 except,因为 only 相当于白名单,相对于 except 更加直观。路由使用白名单有利于养成『安全习惯』。

四、资源路由命名

利用 names 属性来修改,格式为 动作 => 名词 ,例如 'index' => 'photos.index',PhotosController 里的方法 index ,对应路由命名 'photos.index'。完整例子如下:

Route::resource('photos', 'PhotosController', ['names' => [
    'index'   => 'photos.index',
    'create'  => 'photos.create',
    'store'   => 'photos.store',
    'show'    => 'photos.show',
    'edit'    => 'photos.edit',
    'update'  => 'photos.update',
    'destroy' => 'photos.destroy'
]]);

五、定义包含斜杆(/)的路由参数

例如这样的一个 URL:

https://packagist.org/packages/laravel/sco…

我们想让 laravel/scout 这个 URI 分段为参数,可以这样做:

Route::get('packages/{slashName?}', 'PackagesController@show')
            ->where('slashName', '(.*)');

此时 PackagesControllershow 方法:

public function show($slashName, Request $request)
{
    dd($slashName);
}

会输出:

“laravel/scout”

六、路由缓存和清理

线上尽量使用路由缓存,路由缓存会大大减少注册所有路由所需的时间。在某些情况下,路由注册的速度甚至能快上 100 倍。要生成路由缓存,只需执行 artisan 命令 

php artisan route:cache

清除路由缓存:

php artisan route:clear

参考文档:

https://learnku.com/docs/laravel-specification/5.5/router/502

https://learnku.com/laravel/wikis/25573

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora