# 中间件

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。