详解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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
Aug 08 Javascript
javascript不可用的问题探究
Oct 01 Javascript
提高jQuery性能的十个诀窍
Nov 14 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
javascript从image转换为base64位编码的String
Jul 29 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
JavaScript数据结构与算法之栈与队列
Jan 29 Javascript
用iframe实现不刷新整个页面上传图片的实例
Nov 18 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 Javascript
vue中使用mockjs配置和使用方式
Apr 06 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
isset和empty的区别
2007/01/15 PHP
比较详细PHP生成静态页面教程
2012/01/10 PHP
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
修复IE9&safari 的sort方法
2011/10/21 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
理解javascript封装
2016/02/23 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python3处理HTTP请求的实例
2018/05/10 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
深入了解python中元类的相关知识
2019/08/29 Python
python中判断文件结束符的具体方法
2020/08/04 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
如何利用python发送邮件
2020/09/26 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
Python使用openpyxl复制整张sheet
2021/03/24 Python
年级组长自我鉴定
2014/02/22 职场文书
家长给学校的建议书
2014/05/15 职场文书
公司年终奖分配方案
2014/06/16 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
就业意向书
2014/07/29 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
2014年审计工作总结
2014/11/17 职场文书
导游词书写之黄山
2019/08/06 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python