详解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 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
鼠标滑在标题上显示图片的JS代码
Nov 19 Javascript
js中创建对象的几种方式示例介绍
Jan 26 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
javascript学习小结之prototype
Dec 03 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
Mar 11 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 Javascript
JavaScript学习笔记之数组基本操作示例
Jan 09 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
Aug 29 Javascript
uni-app如何实现增量更新功能
Jan 03 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取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
手机端转换rem适应
2017/04/01 Javascript
angularjs指令之绑定策略(@、=、&)
2017/04/13 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
《会走路的树》教后反思
2014/04/19 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python