Backend

中间件

Malagu 中间件与 Koa 里面的中间件是一样的概念,实现了一个洋葱模型,通过中间件可以对请求的处理进行扩展增强,Malagu 框架本身很多功能就是通过中间件来实现的,比如 Cookies、Session、认证和授权等等。

接口

中间件必须要实现以下的Middleware接口:

export interface Middleware {
  handle(ctx: Context, next: () => Promise<void>): Promise<void>;

  readonly priority: number;
}

示例

@Component(Middleware)
export class CookiesMiddleware implements Middleware {
  @Autowired(CookiesFactory)
  protected readonly cookiesFactory: CookiesFactory;

  async handle(ctx: Context, next: () => Promise<void>): Promise<void> {
    if (ctx.request) {
      Context.setCookies(await this.cookiesFactory.create());
    }
    await next();
  }

  readonly priority = COOKIES_MIDDLEWARE_PRIORITY;
}

只需要实现 Middleware,并且加上装饰器@Component(Middleware)就实现并注册了自己的中间件了。

注意:调用 next 方法的时候一定要记得加await关键字,否则会导致全局异常处理失效的问题。


Copyright © 2024 Zero (github@groupguanfang) 粤ICP备2023102563号