如何在中间件 [Nest Fastify] 中获取/设置请求/响应标头?

Dan*_*iaz 4 node.js nestjs fastify nestjs-fastify

如何使用 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

Nest 文档上没有 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/

Jay*_*iel 5

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

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