2

如何使用 Fastify 在 NestJS 中注入请求头。

import { FastifyRequest, FastifyReply } from 'fastify'; // fastify types are not valid

@Injectable()
export class TracingMiddleware implements NestMiddleware {
  use(req: any, res: any, next: () => void) {
    console.log('MyRequestHeaderKey', req.headers['MyRequestHeaderKey']); // find out how to get a header 
    res.header('MyResponseHeaderKey', 'MyResponseHeaderValue'); // find out how to set headers
    next();
  }
}

嵌套文档中没有关于 fastify 中间件的参考:https ://docs.nestjs.com/middleware

我已经阅读了 fastify 文档但没有成功:https ://www.fastify.io/docs/v1.13.x/Reply/ & https://www.fastify.io/docs/v1.13.x/Request/

4

1 回答 1

3

带有 Nest 的中间件是 Express 风格的中间件。虽然可以使用 Fastify,但请注意您实际上是在访问req.rawandres.raw而不是FastifyRequestand FastifyReply警卫拦截器在使用 Fastify 时通常比标准中间件更成功,请注意。

话虽如此,req.headers应该拉回headers上的属性Incoming Request,并且res.setHeader()应该用于在上设置标题ServerResponse

于 2020-09-12T01:00:51.343 回答