简单路由操作:
1、 利用匿名函数直接操作相关路由
Route::get('/', function () {
return 'Hello, World!';
});
上述路由会返回一个具有hello,world的页面(Laravel 会通过内置的响应栈和中间件对返回内容进行处理。)
2、 路由参数以及限定(where)
Route::get('page/{name}', function ($name) {
return '页面名称: ' . $name;
})->where('name', '[A-Za-z]+');
利用{参数名}提取url中的参数,也可以使用where对参数进行过滤不符合规则的则返回404页面
3、 利用路由命名方式对路由的名称加以修改
Route::get('user/{id?}', function ($id = 1) {
return "用户ID: " . $id;
})->name('user.profile');
这样访问user.profile就是访问user这个路由
前端视图模板中可以通过辅助函数 route 并传入路由名称(如果有路由参数,则以数组方式作为第二个参数传入)来引用该路由:
<a href="{{ route('user.profile', ['id' => 100]) }}">
// 输出:http://blog.test/user/100
4、 利用路由分组为路由分类,主要使用在路由具有相同的中间件
路由可以直接使用中间,但是如果有多个路由使用同一个中间件还使用下列方法的话不仅不美观而且可读性差
Route::get('/', function () {
//
})->middleware('token', 'auth');
所以利用路由分组,实例如下:
Route::group(['middleware' => 'auth'], function () {
Route::get('dashboard', function () {
return view('dashboard');
});
Route::get('account', function () {
return view('account');
});
});
5、 相对复杂的路由可以利用以下:
Route::get('/task', 'TaskController@home');
以get的方式通过路由访问TaskController的home方法
6、 资源路由:
HTTP请求方式 | URL | 控制器方法 | 路由命名 | 业务逻辑描述 |
---|---|---|---|---|
GET | post | index() | post.index | 展示所有文章 |
GET | post/create | create() | post.create | 发布文章表单页面 |
POST | post | store() | post.store | 获取表单提交数据并保存新文章 |
GET | post/{post} | show() | post.show | 展示单个文章 |
GET | post/{id}/edit | edit() | post.edit | 编辑文章表单页面 |
PUT | post/{id} | update() | post.update | 获取编辑表单输入并更新文章 |
DELETE | post/{id} | destroy() | post.desc | 删除单个文章 |
简单理解就是通过强化一个控制器通过上面的表格对资源进行控制。已经了解了 Laravel 中对资源路由的命名约定,Laravel 还为我们提供了一个 Route::resource 方法用于一次注册包含上面列出的所有路由,并且遵循上述所有约定:
扫描二维码关注公众号,回复:
9027324 查看本文章
Route::resource('post', 'PostController');
就是把上述表格中的各个方式通过resource“封装”一下。
7、 路由模型绑定(就是把路由和特定的模型进行绑定当路由传回参数时直接调用模型进行查询而不用再在后台进行复杂的代码操作)
Route::get('task/{task}', function (\App\Models\Task $task) {
dd($task); // 打印 $task 明细
});
通过上述的路由设置可以直接从路由得到task参数然后直接传送给模型查询然后直接返回实例
8、 兜底路由(就是处理未定义路由,替代404页面)
Route::fallback(function () {
return '我是最后的屏障';
});
9、 频率限制(一个是在某些需要验证/认证的页面限制用户失败尝试次数,提高系统的安全性,另一个是避免非正常用户(比如爬虫)对路由的过度频繁访问)
Route::middleware('throttle:60,1')->group(function () {
Route::get('/user', function () {
//
});
});
利用上述的中间件完成操作60表示频率,1表示每1分钟。