详解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 easyui 结合jsp简单展现table数据示例
Apr 18 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
Jun 23 Javascript
jquery单行文字向上滚动效果的实现代码
Sep 05 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
jquery判断密码强度的验证代码
Apr 22 Javascript
jQuery表格插件datatables用法汇总
Mar 29 Javascript
微信小程序登录态控制深入分析
Apr 12 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
vue 动态组件用法示例小结
Mar 06 Javascript
javascript实现获取中文汉字拼音首字母
May 19 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 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
php的header和asp中的redirect比较
2006/10/09 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
PHP在线书签系统分享
2016/01/04 PHP
Javascript的闭包
2009/12/31 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
导师评语大全
2014/04/26 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
网站推广策划方案
2014/06/04 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
个人授权委托书范文
2014/09/21 职场文书
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
python playwright之元素定位示例详解
2022/07/23 Python