详解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 相关文章推荐
js将控件隐藏及display属性的使用介绍
Dec 30 Javascript
Jquery的基本对象转换和文档加载用法实例
Feb 25 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
vue分页组件table-pagebar使用实例解析
Nov 15 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
微信小程序中子页面向父页面传值实例详解
Mar 20 Javascript
Vue.js组件通信的几种姿势
Oct 23 Javascript
Vue CL3 配置路径别名详解
May 30 Javascript
解决Vue打包后访问图片/图标不显示的问题
Jul 25 Javascript
VUE项目初建和常见问题总结
Sep 12 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
vue解决花括号数据绑定不成功的问题
Oct 30 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
php中的异常和错误浅析
2017/05/03 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
JavaScript实现图片拖曳效果
2017/09/08 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
Python closure闭包解释及其注意点详解
2019/08/28 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
博士毕业生自我鉴定范文
2014/04/13 职场文书
自主招生学校推荐信
2014/09/26 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
2014年市场部工作总结
2014/11/25 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
班主任先进事迹材料
2014/12/17 职场文书
大国崛起观后感
2015/06/02 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android