根据controller docs我可以使用 @Headers(param?: string)
或 req.headers
或 req.headers[param]
来获取 header 值。我尝试了第一种方法,我在 Postman 的请求 header 中有以下内容
Content-Type:application/json
My-Id:test12345
我有以下 Controller 示例代码
@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
}
当我设置断点以检查 My-Id
header 中的值时,它是未定义的。
那么在Nest.Js中如何正确获取RESTful服务客户端的header值呢?
最佳答案
header 将以小写形式发送,因此您需要使用 @Headers('my-id')
。
通过注入(inject)完整的 header 对象易于调试:
import { Headers } from '@nestjs/common';
...
@Put('/')
public async put(@Headers() headers) {
console.log(headers);
}
headers
变量将引用 req.headers
.
关于node.js - 如何正确使用Nest.js的@Headers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54081720/