详解Koa中更方便简单发送响应的方式


Posted in Javascript onJuly 20, 2018

背景

最近做了很多node的后台项目,写了很多接口,但是发现随着接口的慢慢增多,需要写越来越来越多类似于下面这种代码。

ctx.body = {
  data: {
    name: 'test'
  },
  status: {
    code: 0,
    message: success
  }
}

写成这样还好,至少做到了所有接口返回的格式统一,如果没有在这方面做规范,那么后台的接口返回不统一,将会给前端带来很多的问题。

而且每个接口都要写这么一大堆的代码。感觉是个特别麻烦的事。

所以koa2-response就这么诞生了。其实在写这篇文章之前,我已经在我的项目里面用了一段时间了,方便了我们的操作。

安装

npm install koa2-response

用法

const koa = require('koa');
const router = require('koa-router')();
const app = new koa();
const response = require('koa2-response');

const code = {
 UNKNOWN_ERROR: [1, 'Sorry, you seem to have encountered some unknown errors.']
}

router
 .get('/', (ctx, next) => {
  response.success(ctx, {
   name: 'test'
  })
 })
 .get('/error_test', (ctx, next) => {
  response.error(ctx, code.UNKNOWN_ERROR);
 })

app.use(router.routes());
app.use(router.allowedMethods());

app.listen(3000);

就这样很简单的就可以统一后端的返回数据,这个方法让我在项目中节约了很多时间。这个中间件还是在持续更新中,现在已经有的方法是response.success和response.error。我打算继续更新一个方法叫response.throw,这可以让后台自定义返回的http状态码以及错误信息。例如,用户没有权限,http的状态码就应该是401,而不应该是我们自定义的code了。

写在后面

大家如果有更好的解决方案,希望不吝赐教。

Github传送门koa2-response

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 Javascript
一个js实现的所谓的滑动门
May 23 Javascript
javascript+iframe 实现无刷新载入整页的代码
Mar 17 Javascript
jquery实现简单易懂的图片展示小例子
Nov 21 Javascript
页面定时刷新(1秒刷新一次)
Nov 22 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
jQuery操作基本控件方法实例分析
Dec 31 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
JQuery的attr 与 val区别
Jun 12 Javascript
详谈js中window.location.search的用法和作用
Feb 13 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 #Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 #Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 #Javascript
JS+H5 Canvas实现时钟效果
Jul 20 #Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 #Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 #Javascript
webpack+vue-cil中proxyTable处理跨域的方法
Jul 20 #Javascript
You might like
php面向对象 字段的声明与使用
2012/06/14 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
windows下安装python paramiko模块的代码
2013/02/10 Python
python多任务之协程的使用详解
2019/08/26 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
小学毕业感言500字
2014/02/28 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
倡议书怎么写?
2019/04/11 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
python中pycryto实现数据加密
2022/04/29 Python