详解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编程起步(第三课)
Feb 27 Javascript
基于jquery的tab切换 js原理
Apr 01 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
Jquery实现图片左右自动滚动示例
Sep 25 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
Jan 09 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
Mar 03 Javascript
javascript实现密码验证
Nov 10 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
Jun 07 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
详解Vue中的基本语法和常用指令
Jul 23 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 setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
smarty简单应用实例
2015/11/03 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
js不是基础的基础
2006/12/24 Javascript
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
高中自我鉴定范文
2013/11/03 职场文书
工程部经理岗位职责
2013/12/08 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers