本文是 Extend(扩展)的最后一节,主要讲一下 response 对象和 helper 对象的扩展。
编写 Respose 扩展
在/app/extend
文件夹下,新建立一个response.js
文件。我们的需求是和上节课向对应的,作一个设置 token 的扩展。打开response.js
文件,编写下面的代码。
module.exports={ set token(token){ this.set('token',token) } };
需要设置的方法以set
关键字开头,然后用this.set( )
就可以设置返回的token
了。
编写使用方法和路由
在/app/controll/mybj.js
文件下,新建一个方法。然后用response.token
来设置 token 的值。
async newResponse(){ const {ctx} = this; ctx.response.token='mybj123.com' ctx.body = 'newRespose' }
然后设置路由 router.js :
router.get('/newResponse',controller.mybj.newResponse);
在终端里开启服务npm run dev
,然后输入http://127.0.0.1/newResponse
。然后按F12
打开浏览器的调试模式,然后进入Network
标签,再次刷新浏览器,再选择All
,点击newResponse
。就可以看到token
。
编写 helper 扩展
我们紧接着再来学一下helper
对象的扩展。我们作一个把字符串进行base64
加密的方法。在/app/extend/
文件夹下,新建一个helper.js
文件。
module.exports = { base64Encode(str = ''){ return new Buffer(str).toString('base64'); } }
虽然Buffer()
方法显示已经弃用,但是你还是可以使用的。
使用 Helper 扩展
我们省事一点,直接在/app/controller/mybj.js
文件中的newResponse
方法里,直接使用。
async newResponse(){ const {ctx} = this; ctx.response.token='mybj123.com' const testBase64 = ctx.helper.base64Encode('mybj123.com') ctx.body = testBase64 }
然后到浏览器,刷新一下页面。就可以看到输出的结果编程了 base64 加密的文字了。