我将NestJS用于我的API服务器,对此感到非常满意。 我的大多数控制器函数都在调用异步函数并返回JSON-就像一个吊饰。
但是在某些控制器功能中,我需要直接将响应/标头/等设置为响应对象,例如:
@Get('api/media')
async getMedia(@Param('id') id: string,
@Req() req) {
let result = await getMediaFromBackend(id);
req.res.set('Content-Type', result.contentType); // need to set content-type dynamically
req.res.send(result.data); // send non-json response
}
在其他情况下,我需要通过管道传输gzipStream。
它可以工作,但是我总是在控制台中遇到未处理的拒绝:
“发送后无法设置标题”
好像NestJS想要在控制器函数返回后设置/覆盖标头。 任何想法如何避免这种情况?我需要一些功能来告诉NestJS,例如“我自己会完全照顾好响应”
非常感谢!
答案 0 :(得分:1)
因为要注入@Req()
并通过req.res
访问响应,所以将使用标准的嵌套控制器行为。如果您直接使用@Res
,则nest不会弄乱响应对象,并且您可以完全控制它。
@Get('api/media')
async getMedia(@Param('id') id: string,
@Res() res) {
let result = await getMediaFromBackend(id);
res.set('Content-Type', result.contentType); // need to set content-type dynamically
res.send(result.data); // send non-json response
}