如何正确使用Nest.js的@Headers?

har*_*ang 5 http-headers node.js nestjs

根据控制器文档,我可以使用@Headers(param?: string)req.headersreq.headers[param]获取标头值。我尝试了第一种方法,在Postman的请求标头中有以下内容

Content-Type:application/json
My-Id:test12345
Run Code Online (Sandbox Code Playgroud)

我有以下控制器示例代码

@Put('/aa/:aa/bb/:bb/')
@UsePipes(new ValidationPipe({ transform: true }))
public async DoMyJob(@Body() request: MyRequestDto,
                                @Param('aa') aa: number,
                                @Param('bb') bb: string,
                                @Headers('My-Id') id: string): Promise<MyResponseDto> {
    // More code here
}
Run Code Online (Sandbox Code Playgroud)

当我设置断点以检查My-Id标题中的值时,它是未定义的。

那么,如何正确地在Nest.Js中从RESTful服务客户端获取标头值?

Kim*_*ern 7

标头将以小写形式发送,因此您需要@Headers('my-id')


通过注入完整的标头对象,易于调试:

@Put('/')
public async put(@Headers() headers) {
    console.log(headers);
}
Run Code Online (Sandbox Code Playgroud)