详解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 相关文章推荐
解放web程序员的输入验证
Oct 06 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
jQuery鼠标事件汇总
Aug 30 Javascript
AngularJS内建服务$location及其功能详解
Jul 01 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
用jquery获取自定义的标签属性的值简单实例
Sep 17 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
May 10 Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
Sep 26 Javascript
C#程序员入门学习微信小程序的笔记
Mar 05 Javascript
vue使用websocket的方法实例分析
Jun 22 Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 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
留言板翻页的实现详解
2006/10/09 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Python装饰器语法糖
2019/01/02 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
过滤器的用法
2013/10/08 面试题
建筑个人求职信范文
2014/01/25 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
会计专业导师推荐信
2014/03/08 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS