详解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 相关文章推荐
非常好用的JsonToString 方法 简单实例
Jul 18 Javascript
Javascript alert消息换行的方法
Aug 07 Javascript
jQuery选择器全集详解
Nov 24 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
AngularJS上拉加载问题解决方法
May 23 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
Jan 21 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
javascript性能优化之分时函数的介绍
Mar 28 Javascript
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
vue缓存的keepalive页面刷新数据的方法
Apr 23 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
微信小程序自定义组件components(代码详解)
Oct 21 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
星际争霸任务指南——神族
2020/03/04 星际争霸
目录,文件操作详谈―PHP
2006/11/25 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
php 过滤器实现代码
2010/08/09 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
Javascript原型链和原型的一个误区
2014/10/22 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Python 异常处理的实例详解
2017/09/11 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
地道战观后感300字
2015/06/04 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python