详解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优缺点分析说明
Jun 09 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
Mar 07 Javascript
jQuery JSON实现无刷新三级联动实例探讨
May 28 Javascript
JavaScript将取代AppleScript?
Sep 18 Javascript
浅谈Javascript的静态属性和原型属性
May 07 Javascript
jquery实现倒计时效果
Dec 14 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
Mar 17 Javascript
基于javascript实现表格的简单操作
May 21 Javascript
Angular-Touch库用法示例
Dec 22 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
Sep 08 Javascript
对node.js中render和send的用法详解
May 14 Javascript
细说webpack6 Babel的使用详解
Sep 26 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
python服务器端收发请求的实现代码
2014/09/29 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Python中的引用知识点总结
2019/05/20 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
应聘自荐信
2013/12/14 职场文书
寒假思想汇报
2014/01/10 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
项目合作协议书范本
2014/04/16 职场文书
反邪教警示教育方案
2014/05/13 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
委托公证书格式
2015/01/26 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL