gpt4 book ai didi

header - Fastify & NestJS - 如何在拦截器中设置响应头

转载 作者:行者123 更新时间:2023-12-04 10:01:38 26 4
gpt4 key购买 nike

我正在尝试在我的拦截器中设置响应 header ,并且我发现的任何方法都没有运气。我试过了:

 const request = context.switchToHttp().getRequest();
const response = context.switchToHttp().getResponse();
<snippet of code from below>
return next.handle();
  • request.res.headers['my-header'] = 'xyz'
  • response.header('my-header', 'xyz')
  • response.headers['my-header'] = 'xyz'
  • response.header['my-header'] = 'xyz'

  • 没有运气。第一个选项说 res 是未定义的,第二个“无法读取未定义的属性 'Symbol(fastify.reply.headers)'”,其他的什么都不做。

    最佳答案

    我有以下为我工作的 FastifyAdapter在我的main.ts :

    header 拦截器

    @Injectable()
    export class HeaderInterceptor implements NestInterceptor {
    intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    return next.handle().pipe(
    tap(() => {
    const res = context.switchToHttp().getResponse<FastifyReply<ServerResponse>>();
    res.header('foo', 'bar');
    })
    );
    }
    }

    使用 .getResponse<FastifyReply<ServerResponse>>()为我们提供了正确的打字方式。

    应用模块

    @Module({
    imports: [],
    controllers: [AppController],
    providers: [
    AppService,
    {
    provide: APP_INTERCEPTOR,
    useClass: HeaderInterceptor,
    },
    ],
    })
    export class AppModule {}

    将拦截器绑定(bind)到整个服务器
    curl命令

    ▶ curl http://localhost:3000 -v
    * Rebuilt URL to: http://localhost:3000/
    * Trying 127.0.0.1...
    * TCP_NODELAY set
    * Connected to localhost (127.0.0.1) port 3000 (#0)
    > GET / HTTP/1.1
    > Host: localhost:3000
    > User-Agent: curl/7.54.0
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < foo: bar
    < content-type: text/plain; charset=utf-8
    < content-length: 12
    < Date: Thu, 14 May 2020 14:09:22 GMT
    < Connection: keep-alive
    <
    * Connection #0 to host localhost left intact
    Hello World!%

    如您所见,返回的响应带有标题 foo: bar意味着拦截器添加了预期的内容。

    查看您的错误,看起来您的第二次尝试实际上可能是 response.headers('my-header', 'xyz) .无论如何,以上内容对我有用 nest new应用程序,以及最新版本的 Nest 软件包。

    关于header - Fastify & NestJS - 如何在拦截器中设置响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61796828/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com