如何正确使用 Nest.js 的 @Headers?
Posted
技术标签:
【中文标题】如何正确使用 Nest.js 的 @Headers?【英文标题】:How to use Nest.js's @Headers properly? 【发布时间】:2019-06-02 13:13:00 【问题描述】:根据controller docs,我可以使用@Headers(param?: string)
或req.headers
或req.headers[param]
来获取标头值。我尝试了第一种方法,我在 Postman 的请求标头中遵循了以下内容
Content-Type:application/json
My-Id:test12345
我有以下控制器示例代码
@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
标头的值时,它是未定义的。
那么我应该如何在 Nest.Js 中正确地从 RESTful 服务客户端获取标头值?
【问题讨论】:
【参考方案1】:标题将以小写形式发送,因此您需要 @Headers('my-id')
。
通过注入完整的 headers 对象易于调试:
import Headers from '@nestjs/common';
...
@Put('/')
public async put(@Headers() headers)
console.log(headers);
headers
变量将引用req.headers
。
【讨论】:
以上是关于如何正确使用 Nest.js 的 @Headers?的主要内容,如果未能解决你的问题,请参考以下文章
RoleGuard 如何在 Nest JS 中工作?智威汤逊
Nest.js 与 AWS Cognito,如何访问用户属性
无论如何在 Nest.js 中使用 Fastify 获取请求、响应的类型接口