16.Egg.js教程-Egg.js的Extend-context
接着上文,再来学习一下 Egg.js 中对 Context(上下文)的扩展。
重新编写一个方法
为了学习更简单明了,在/app/controller/mybj.js文件里重新编写一个方法newContext()。先用最简单的方式,在页面显示一个方法名称newContext就可以了。
async newContext(){
const {ctx} = this ;
ctx.body = 'newContext';
}
写完方法,到/app/router.js里,配置路由。
router.get('/newContext',controller.mybj.newContext);
路由配置完成后,可以在终端中用npm run dev打开测试服务,然后在浏览器里输入http://127.0.0.1:7001/newContext如果能正常在页面中显示出newContext就说明正常了,可以继续下面的操作。
编写 Contenxt 扩展
上面的一些准备方法和路由都写好后,就可以开始本节的正式内容了“扩展 Context 方法”。以前通过上下文来获取传递参数时,get方法请求和post方法请求的获取方式是不同的,我们编写的方法就是让这两个请求获取参数的方法统一化,都用params()方法。
在/app/extend文件夹下,新建一个文件context.js(此文件名称是 Egg.js 要求的固定写法,不能改变)。然后编写下面的代码。
module.exports = {
params(key){
const method = this.request.method
if(method ==='GET'){
return key ? this.query[key] : this.query;
}else{
return key? this.request.body[key] : this.request.body;
}
}
};
写完之后,打开/app/controller/mybj.js文件,使用刚编写的params获取参数,然后打印在服务端控制台。
async newContext(){
const {ctx} = this ;
const params = ctx.params();
console.log(params);
ctx.body = 'newContext';
}
这样写完,理论上就可以接收post和get请求的参数都可以了。
测试请求参数获得情况
get 请求参数获取
直接在浏览器里输入:
http://127.0.0.1:7001/newContext?username=mybj
在到 VSCode 的终端中查看结果,是可以接收到{ username: 'mybj' }参数的。
post 请求参数获取
get请求没问题了,先修改router.js,把请求方式改为post。
router.post('/newContext',controller.mybj.newContext);
这里继续使用第 06 节中讲过的REST Client插件进行 Post 请求测试。在根目录下,打开test.http文件,然后编写测试代码。
POST http://127.0.0.1:7001/newContext
Content-Type: application/json
{
"name":"小红",
"age":18
}
写好后,点击Send Request按钮测试,可以看到也是可以接收到 POST 传递的参数的。
总结
本文我们讲解了 Egg.js 中对 Context(上下文对象)的方法扩展,我们编写了一个可以同时接受POST和GET的请求的参数 Context 扩展方法,并进行了基本的测试。
以上关于16.Egg.js教程-Egg.js的Extend-context的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 16.Egg.js教程-Egg.js的Extend-context
微信
支付宝