详解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 相关文章推荐
javascript之函数直接量(function(){})()
Jun 29 Javascript
javascript 浏览器检测代码精简版
Mar 04 Javascript
jQuery中detach()方法用法实例
Dec 25 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
JS实现的自定义水平滚动字体插件完整实例
Jun 17 Javascript
JS获取和修改元素样式的实例代码
Aug 06 Javascript
JS实现的RGB网页颜色在线取色器完整实例
Dec 21 Javascript
js+html5实现半透明遮罩层弹框效果
Aug 24 Javascript
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
Vue基于localStorage存储信息代码实例
Nov 16 Javascript
vue中使用echarts的示例
Jan 03 Vue.js
详解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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
python 二分查找和快速排序实例详解
2017/10/13 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python中的变量如何开辟内存
2018/06/26 Python
Python切片操作深入详解
2018/07/27 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
代码中finally中的代码会不会执行
2012/02/06 面试题
小车司机岗位职责
2013/11/25 职场文书
消防先进事迹材料
2014/02/10 职场文书
总裁助理岗位职责
2014/02/17 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
市级文明单位申报材料
2014/05/07 职场文书
材料员岗位职责范本
2015/04/11 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB