根据 PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构) 已经搭建好环境。
一、什么是路由?
- 将用户的请求按照事先规划的方案提交给指定的控制器和方法来进行处理。
- 路由配置文件:
routes/web.php
二、四种基础路由的定义(重点
)
- 路由模板
// 路由样式 Route::请求方式('url', 匿名函数); Route::请求方式('url', '控制器名称@操作方法'); Route::请求方式('url', '命令空间\控制器名称@操作方法'); // 路由中 url 前面的斜杠可写可不写 Route::请求方式('/url', 匿名函数); ① 从服务器取出资源(一项或多项) select Route::get($uri, $callback); ② 在服务器新建一个资源 insert Route::post($uri, $callback); ③ 在服务器更新资源 update Route::put/patch($uri, $callback); ④ 从服务器删除资源 delete Route::delete($uri, $callback); 4 种基础路由中,只有 GET 请求方式不进行 CSRF 验证,其它请求方式则需要 CSRF 验证
// get 请求,它没有 CSRF 验证 Route::get('/get', function () { return 'get请求'; }); // 下面的都需要 CSRF 验证 // post 请求 Route::post('/post', function () { return 'post请求'; }); // put/patch 请求 Route::put('/put', function () { return 'put请求'; }); // delete 请求 Route::delete('/delete', function () { return 'delete请求'; });
- 例子效果 -
通过网站打开
:
Get
请求,没有CSRF
验证Post
请求走Postman
,浏览器默认为Get
请求。
- 例子效果 -
Postman
:
Get
请求,没有CSRF
验证
Post
请求,报419
错误,后面几种请求都需要CSRF
验证,往后看解决方案。
// get 请求,它没有 CSRF 验证 Route::get('/req', function () { return 'get请求'; }); // 下面的都需要 CSRF 验证 // post 请求 Route::post('/req', function () { return 'post请求'; }); // put/patch 请求 Route::put('/req', function () { return 'put请求'; }); // delete 请求 Route::delete('/req', function () { return 'delete请求'; });
- 例子效果 -
通过网站打开
: Get
请求
- 例子效果 -
Postman
:
Get
请求,没有CSRF
验证
Post
请求,报419
错误,后面几种请求都需要CSRF
验证,往后看解决方案。
- 解决路由例子
CSRF
验证问题 - PHP - Laravel CSRF 介绍与用法(及取消 CSRF 验证)
- 找到
app/Http/Middleware/VerifyCsrfToken.php
文件中的$except
字段,添加不需要进行CSRF
验证的路由:
protected $except = [ // 把想排除的路由规则卸载此数组中 // 将下面路由的规则不进行 CSRF 验证 '/post', '/req' ];
- 再次尝试请求
三、match
配置路由(重点
)
- 单个路由配置多个请求类型
// match 支持一次性填写多个请求类型 Route::match(['get', 'post'], '/req', function () { // return 'match 路由定义'; dump($_SERVER); });
- 例子效果 -
Postman
:
四、any
配置路由(实际工作中不推荐使用
)
- 单个路由自适应支持所有请求
// match 支持一次性填写多个请求类型,工作中不推荐使用这种 Route::any('/req', function () { // return 'any 路由定义'; dump($_SERVER); });
- 例子效果 -
Postman
: