# 中间件
Middleware 中间件是一个非常重要的概念,Astroboy 中间件是基于 Koa 中间件构建,所以完全兼容 Koa 的中间件。与普通中间件不同的地方,Astroboy 框架的中间件约定了写法,如下代码所示:
/**
* 设置 X-Response-Time 响应头,单位毫秒
*/
module.exports = (options, app) => {
return async function rt(ctx, next) {
const start = Date.now();
await next();
ctx.set('X-Response-Time', Date.now() - start);
};
};
中间件格式为一个高阶函数,外部的函数接收两个参数:
- 第一个参数:options,中间件的配置对象,从相应的中间件配置文件取得。
- 第二个参数:app,继承 Koa Application 类的一个实例对象
执行后返回一个 async function,该方法接收两个参数 ctx 和 next。