详解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 相关文章推荐
jquery改变tr背景色的示例代码
Dec 28 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
JavaScript实现的一个日期格式化函数分享
Dec 06 Javascript
javascript背景时钟实现方法
Jun 18 Javascript
浅析BootStrap模态框的使用(经典)
Apr 29 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
vue实现2048小游戏功能思路详解
May 09 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
Jul 10 Javascript
vue实现简单跑马灯效果
May 25 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采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
js验证密码强度解析
2020/03/18 Javascript
Vue3为什么这么快
2020/09/23 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
Python开发的HTTP库requests详解
2017/08/29 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
毕业生自我鉴定范文
2013/11/08 职场文书
论文指导教师评语
2014/04/28 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
死亡赔偿协议书
2015/01/28 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers