详解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获取FCK编辑器信息的具体方法
Jul 12 Javascript
js获取php变量的实现代码
Aug 10 Javascript
js实现省市联动效果的简单实例
Feb 10 Javascript
用js传递value默认值的示例代码
Sep 11 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
Aug 07 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
Dec 27 Javascript
Node.js Event Loop各阶段讲解
Mar 08 Javascript
JS实现继承的几种常用方式示例
Jun 22 Javascript
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
vue 路由懒加载中给 Webpack Chunks 命名的方法
Apr 24 Javascript
vue-cli3中配置alias和打包加hash值操作
Sep 04 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 常用的header头部定义汇总
2015/06/19 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
js DOM 元素ID就是全局变量
2012/09/20 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
Javascript的this用法
2017/01/16 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
python list格式数据excel导出方法
2018/10/31 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
新闻专业本科生的自我评价分享
2013/11/20 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
建筑结构施工求职信
2014/07/11 职场文书
运动会稿件100字
2014/09/24 职场文书
撤诉状格式范本
2015/05/19 职场文书
三八节祝酒词
2015/08/11 职场文书
销售口号霸气押韵
2015/12/24 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
SQL CASE 表达式的具体使用
2022/03/21 SQL Server
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android
centos7安装mysql5.7经验记录
2022/05/02 Servers