详解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 function调用时的参数检测常用办法
Feb 26 Javascript
javascript跨域刷新实现代码
Jan 01 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
js 时间格式与时间戳的相互转换示例代码
Dec 25 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
Dec 09 Javascript
用JS生成UUID的方法实例
Mar 30 Javascript
SVG实现时钟效果
Jul 17 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
Sep 18 Javascript
vuex页面刷新后数据丢失的方法
Jan 17 Javascript
微信小程序全局变量功能与用法详解
Jan 22 Javascript
小程序中设置缓存过期的实现方法
Jan 14 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
Jul 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
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
HR求职自荐信范文
2014/06/21 职场文书
锦旗标语大全
2014/06/23 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
中标通知书格式
2015/04/17 职场文书
公司考勤管理制度
2015/08/04 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS