编写 POST 请求的 Controller 方法
直接在/app/controller/mybj.js
文件里,重新编写一个add()
方法。先写个最简单的,只要能用 POST 方法访问到就可以了。
async add(){ const {ctx} = this; ctx.body="add"; }
然后配置路由/app/router.js
文件。
router.post('/add', controller.mybj.add);
这时候就可以进行 POST 请求了,但是 POST 请求不是通过浏览器访问页面就可以访问到的,所以我们还需要用到 VSCode 插件。
REST Client 插件的使用
你可以使用Postman
这样的工具,但Postman
需要重新打开一个软件,显得太重了,一点也不优雅。所以我这里推荐使用 VSCode 中的一个插件REST Client
。
安装方法和发送请求
直接打开 VSCode 中的插件管理,在搜索框查找REST Client
,然后进行安装。安装完成后直接可以使用。
在项目根目录
下,新建一个test.http
(这个名字可以随意起,但是文件后缀名字不能变) , 此处注意后缀是http
才可以和插件进行联动。
POST http://127.0.0.1:7001/add Content-Type: application/x-www-form-urlencoded name=mybj
你也可以使用 JSON 的格式进行上传。
POST http://127.0.0.1:7001/add Content-Type: application/json { "name":"小红" }
需要注意的是,这个插件你需要完全按照这个格式来写,不能随意多出空行,否则就会发送失败。得不到数据。
安全设置解除
当你第一次请求时,可能会返回 403 错误,这是因为 Egg.js 默认开启了 CSRF 安全策略,学习阶段,我们可以关闭掉这个选项。
CSRF 的全名为 Cross-site request forgery, 它的中文名为 伪造跨站请求。
关闭方法是,打开/config/config/default.js
文件,也就是项目的默认配置文件。
然后设置配置项,关闭掉CSRF
。
config.security = { csrf :{ enable:false, } }
写完这段配置代码后,CSRF 安全策略
就被关闭了。我们就可以发送请求了。
接收 POST 参数
能发送 POST 请求后,需要在服务端接收请求。Egg.js 已经给我们封装好了,直接使用ctx.request.body
来获取。
代码如下:
async add(){ const ctx = this.ctx ctx.body={ status: 200, data:ctx.request.body } }
写完代码后,再用REST Client
来发送请求就可以得到返回的参数了。
总结
本文我们主要学的事 Egg.js 中的 POST 请求和参数接收方法,还学习了用于发送请求的 VSCode 插件REST Client
,并使用两种方式向后端传递数据。