coverPiccoverPic

Nest 踩坑:在 Controller 中引入 Request 作为参数,请求不会返回任何东西

踩坑

如下所示,我写了一个 Controller:

ts
  1. @Controller('user')
  2. export class UserController {
  3. constructor(
  4. private readonly userService: UserService
  5. ) {}
  6. @Post('login')
  7. @UsePipes(new ValidationPipe())
  8. login (@Body() loginDto: LoginDto, @Response() response: Res) {
  9. return this.userService.login(loginDto, response)
  10. }
  11. }

login函数中通过@Respons注解引入了返回response作为参数,然后…然后请求到了/user/login接口,不会有任何返回值,直至超时结束请求。

按照 Github issue 上面的说法,引入返回response需要手动结束请求,即调用response.send等方法(见 Express 文档)。

Nest 需要在@Response()注解中加入参数{ passthrough: true }才会自动结束请求。

ts
  1. login (@Body() loginDto: LoginDto, @Response({ passthrough: true }) response: Res) {
  2. return this.userService.login(loginDto, response)
  3. }
0 条评论未登录用户
Ctrl or + Enter 评论
© 2023-2025 LittleRangiferTarandus, All rights reserved.
🌸 Run