1》 创建控制器 PHP artisan make:controller UserController
资源控制器 php artisan make::controller PostController --resource 创建控制器对应的资源控制器 Route::resource('post', 'PostController'); 绑定资源服务器
2》单动作控制器,在控制器中,定义__invoke 方法。调用对象时,自动调用
3》 控制器中使用中间件
__contruct() 方法中,添加 $this->middleware('token')->only(['show','index']);
功能剖析
1 路由中,采用匿名函数(闭包)定义映射关系,并采用return 返回数据信息【而非echo等】
2 路由动作,采用post,get,put 等 ,针对安全设置,避免使用any(),而采用
::match(['get','post'],'/',function(){}); 定义支持的动作。
3 采用Controller@index 的模式,在控制器中设置内容
4 路由参数:::get('page/{id}',function($id){})->where(‘id','[0-9]+'); 并用where 进行类型正则约束
4-1 可选参数:get('page/{name?}',function(){}) 可选参数设置
5 命名路由: ::get('page',function(){})->name('user.profile') 使用name简化命名路由
使用route('user.profile') 获取定义的路由
【在实际开发过程中,推荐使用路由命名来引用路由。】
6 路由分组 Route::middleware(['filrst','second'])->group(function(){});
命名空间 Route::namespace('Admin')->group(function(){});
路由前缀 Route::prefix('admin')->group(function(){});
进阶:
路由模型绑定
1)隐式绑定
将路由参数命名为可以唯一标识对应资源模型的字符串
如:Route::get('task/{task}', function (AppModelsTask $task) {
2)显式绑定
显式绑定需要手动配置路由模型绑定。
需要在 AppProvidersRouteServiceProvider 的 boot() 方法中新增如
// 显式路由模型绑定
Route::model('task_model', Task::class);
parent::boot();
3)兜底路由 【5.6版本】
Route::fallback(function () {
return '我是最后的屏障';
频率限制
1)使用限制中间件。【一分钟能只能访问路由60 次】
Route::middleware('throttle:60,1')->group(function () {
Route::get('/user', function () {});
});
2)动态设置限制值
Route::middleware('throttle:rate_limit,1')->group(function () {
不同的模型类设置不同的 rate_limit 属性值来达到动态设置频率限制的效果
路由缓存
php artisan route:cache 生成路由缓存
php artisan route:clear 删除路由缓存
路由基础规则
路由
【响应指定路由】
Route::match(['get','post'],'multy',function(){
return 'multy';
});
【响应任何路由请求方式】
Route::any('multy1',function(){
return 'multy1';
});
【路由参数及默认值】
Route::get('user/{id?}',function($id=2){
return $id;
});
【扩展正则表达式】
Route::get('user/{name?}',function($name='sien'){
return $name;
})->where('name','[A-Za-z]+');
【路由别名】
Route::get('basic',['as'=>'basic',function(){
return 'basic';
}]
);
【路由展示视图】
Route::get('/', function () {
return view('welcome');
});
laravel 5.5 中,重写资源路由