我在努力:
@Post('login')
async login(@Body() body: AuthDto, @Res() res: Response) {
const loginResponse = await this.authService.login(body);
console.log('loginResponse', loginResponse)
res.headers.set('x-access-token', loginResponse.access_token)
return loginResponse
}
但是没有。我得到一个错误:
TypeError: Cannot read property 'set' of undefined
3条答案
按热度按时间9gm1akwq1#
不是最优雅的方式:
return res.set({ 'x-access-token': loginResponse.access_token }).json(loginResponse);
我将把这个逻辑分离到一个拦截器中,检查响应对于path /login是否有效,如果有效,则返回正确的头(使用loginResponse中的某个值)
这是我的工作版本,请注意快速响应,而不是Nest.js。
编辑:从Nest.js/common导入的类型是一个装饰器函数,而不是不使用类型,* 或 * 从Express.js导入响应。
5vf7fwbs2#
要指定自定义响应头,可以使用@Header()装饰器或特定于库的响应对象(并直接调用res.header())。
从
@nestjs/common package
导入标题。mbskvtky3#
我使用了一个拦截器,因为我想在响应的头中添加一个字段来指示我的服务,所以我也将其设置为全局拦截器,但是您也可以通过路由来使用它。
response-add-access-token-to-header.interceptor.ts
要全局添加,请调整main.ts: