绝不 在路由配置文件里书写『闭包路由』或者其他业务逻辑代码,因为一旦使用将无法使用路由缓存
。
路由器要保持干净整洁,绝不 放置除路由配置以外的其他程序逻辑。
必须 优先使用 Restful 路由,配合资源控制器使用。
一般资源路由定义:
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', '(.*)');
此时 PackagesController
的 show
方法:
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