使用Laravel中的查询构造器实现增删改查功能(3)

user 表中的3条记录都被返回了.

b. 现在我们来解析上面路由的第2条:

Route::post('test/queryUsers',['uses' => 'TestController@queryUsers']);

这条路由和第1条路由只有一个 post 的区别, 没错, 这是一个post请求的路由, 我们知道post请求方式无法在浏览器地址栏键入路由来得到结果, 所以我们需要使用一个工具 Postman , 这是个好东西, 如果有同学没用过或是不知道它, 建议查一下熟悉一下, 文中不介绍它.

现在我们在 Postman 新建一个请求, 如图:

我们点击 send 得到 :

纳尼?怎么没有得到我们期望的结果, 很显然哪里不对,我们再来看看路由的文档:

https://learnku.com/docs/lara...

文档中我查找与 post 字眼的相关马迹, 看到:

原来是 CSRF 造成的, 无论是前端同学还是后端同学, 应该都对这个词不陌生, 跨站请求伪造

laravel 中为了解决 CSRF 这个隐患, 默认有保护机制, 我们需要配置 CSRF 白名单 , 根据文档, 我们知道 CSRF 白名单 的配置在 VerifyCsrfToken 中间件里, VerifyCsrfToken 中间件所在路径:

App/Http/Middleware/VerifyCsrfToken.php

打开文件, 添加 CSRF 白名单 ,

protected $except = [
 'http://test.lara.com/test/queryUsers',
 ];

完成这步后我们再打开 postman, 点击 send 可以看到数据如期望返回:

c. 现在我们来解析上面路由的第3条:

Route::get('test/queryUsers/{id}',['uses' => 'TestController@queryUsers']);

可以看出这条路由的区别在于路由末尾的 {id} , 开发中我们会有这样的需求, 前端传递一个用户id, 后端返回这个id对应的该用户信息

此时需要修改下 TestController 控制器 queryUsers 方法:

public function queryUsers() {
 $id = request()->id; // 此种方式获取参数
 $users = DB::table('user')->where('id', $id)->get();
 return json_encode($users);
 }

白话文解释一下这条sql: 在table表里查询id = $id(路由传递的值)的记录,

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5514.html