在我看来,前端框架的中间件的思想来源于传统后端的切面编程(AOP)思想,比如我们常见的身份校验(JWT)。

axios的拦截器也是基于这种程序设计模式的。

中间件的事件处理可以是同步事件,也可以是异步事件,但是得注意了异步事件总是会等同步事件全部执行完成之后才会去执行(后面有个与之相关的中间件)。

一、模块化路由中间件

home.js

一个home路由下,有两个请求地址,一个啥都不写,另一个写了点数据,并将这个koa-router当作模块暴露出去

index.js

这也是一个路由,路由包路由,并添加了一个父路径--“/home”.并且将这个路由暴露出去

最终供我们app使用

此时,我们访问127.0.0.1:1996/home/nav

127.0.0.1:1996/home/

针对这种情况,我们需要对接口的数据返回做一个统一的处理。

二、自定义格式化返回数据中间件

这里为什么在next()后面处理数据?应为next()函数返回一个Promise对象,then函数里面的回调是异步的,这就能保证在路由中间件里的业务逻辑一定先于此处的数据处理。

有一点需要注意的是,koa的ctx.status默认值是404,所以我们要在接口内把业务逻辑写完后修改ctx.status的值,这样,上述中间件就能对不同业务状态返回不同的格式化数据给前台。

有了该中间件之后:

localhost:1996/home

localhost:1996/home/nav

另外,如果你觉得根据业务逻辑来修改ctx.status的值很麻烦的话,可以适当封装工具类来达到目的,例如下面这个工具类:

koa2 mysql 中间件_koa2中间件相关推荐

  1. koa2 mysql 中间件_Koa2——中间件

    1.什么是koa2中间件? koa对网络请求采用了中间件的形式处理,中间件可以介入请求和相应的处理,是一个轻量级的模块,每个中间负责完成某个特定的功能.中间件的通过next函数联系,执行next()后 ...

  2. koa2 mysql 中间件_Koa2第二篇:中间件

    第一篇介绍了生成器目录设计.xyzcoding:Koa2第一篇:详解生成器​zhuanlan.zhihu.com 接下来学习Koa2的中间件. Koa2本身只能算一个极简的HTTP服务器,自身不内置中 ...

  3. koa2 mysql 中间件_Koa2 和 Express 中间件对比

    koa2 中间件 koa2的中间件是通过 async await 实现的,中间件执行顺序是"洋葱圈"模型. 中间件之间通过next函数联系,当一个中间件调用 next() 后,会将 ...

  4. mysql为什么需要中间件_究竟为什么要引入数据库中间件

    不少朋友经常会问我以下问题: 58到家有没有使用数据库中间件 使用了什么数据库中间件,是自研,还是第三方 怎么实现的,是基于客户端的中间件,还是基于服务端的中间件 使用中间件后,join/子查询/集函 ...

  5. node+koa2+mysql搭建博客后台

    本文将详细讲解使用node+koa2+mysql搭建博客后台的全过程. 开发环境 node 8.3.0及以上 npm 5.3.0及以上 mysql 5.7.21 具体的环境配置可查看我的上一篇文章 准 ...

  6. node mysql和koa_node+koa2+mysql搭建博客后台

    本文将详细讲解使用node+koa2+mysql搭建博客后台的全过程. 开发环境 node 8.3.0及以上 npm 5.3.0及以上 mysql 5.7.21 具体的环境配置可查看我的上一篇文章 准 ...

  7. koa2 mysql sequelize_使用nodejs-koa2-mysql-sequelize-jwt 实现项目api接口

    nodejs-koa2-mysql-sequelize-jwt 技术栈:nodejs, koa2, mysql, sequelize, jwt 项目数据层和操作层分明 使用koa2框架中间件,参数处理 ...

  8. 分享Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站

    这是个什么的项目? 使用 Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站. 博客线上地址:www.boblog.com Github地址:https: ...

  9. linux运维中的中间件,linux中间件Nginx的安装过程

    下面一步一步走进中间件"Nginx"中间件的安装过程中 第一步下载nginx件,本站不提供下载哈,各位看官根据自己linux的版本号下载相对应的nginx中间件.,本站以<n ...

最新文章

  1. 云上人最终产品简易代码
  2. 后台开发经典书籍--代码整洁之道
  3. 【python】解决[SSL: CERTIFICATE_VERIFY_FAILED]
  4. matlab碎纸拼接相似函数,基于蒙特卡洛算法构建能量函数的碎纸图片拼接方法
  5. Shell循环与结构化命令
  6. Java缓存Ehcache-核心类和方法介绍及代码实例
  7. 云服务器如何实现装虚拟机_如何在服务器上安装虚拟机呢?服务器虚拟机安装教程...
  8. 为别人着想的表达才是最好的表达
  9. lnmp mysql 哪个好_[LNMP]Mysql生产环境配置
  10. 绿盾无法修改服务器地址,天锐绿盾V5.50.170626最新版修改说明
  11. SQL server2016 数据库 基础知识
  12. Yasm的作用及NASM详解
  13. vue项目运行后自动打开浏览器
  14. php解压有密码的zip,linux下解压有密码的rar压缩包的方法
  15. 大数据时代对存储发展的要求有哪些
  16. 防止ACCESS数据库被下载的一个通用解决方法:
  17. 怎么写软件功能测试报告,分享详细专业的功能检测报告模板
  18. 37岁生日快乐哦:说点大实话
  19. 360图片搜索API
  20. 文档服务器archive,中央归档服务器简介.pdf

热门文章

  1. Go语言---面向对象编程
  2. Unity如何刚体控制物体的移动以及旋转
  3. python color属性_Python turtle.color方法代码示例
  4. 上市公司回购股票是利好还是利空?
  5. 2021年退休工资会不会涨?
  6. 倒车出库何时开始打方向盘,车头似乎很容易撞到左右两侧的车?
  7. 省公务员县公安局,县编办,县政府办,县保密局,这几岗位怎么选?
  8. 2021,新手初学写作的几个温馨建议
  9. 品牌直播启动的三个关键点
  10. 为什么你写的文字没人看,没人赞?