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';
}

这样写完,理论上就可以接收postget请求的参数都可以了。

测试请求参数获得情况

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(上下文对象)的方法扩展,我们编写了一个可以同时接受POSTGET的请求的参数Context扩展方法,并进行了基本的测试。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:
1. 本站所有文章教程及资源素材均来源于网络与用户分享或为本站原创,仅限用于学习和研究。
2. 如果内容损害你的权益请联系客服QQ:1642748312给予处理。
码云笔记 » 16.Egg.js教程-Egg.js的Extend-context

发表回复

IT互联网行业相关广告投放 更专业 更精准

立即查看 联系我们