use*_*310 32 javascript typescript nestjs
除了200之外,我如何在nestjs中发送错误代码?我尝试在方法中注入响应对象,但没有方法发送错误。
save(@Body() body: any, @Res() response: Response): string {
console.log("posting...")
console.log(body)
return "saving " + JSON.stringify(body)
}
Run Code Online (Sandbox Code Playgroud)
上面的代码发送带有 20X 状态的正文,我想发送不同的状态代码,例如 400 或 500。
小智 57
您应该在您的情况下使用异常过滤器。
在您的情况下,您将需要:
throw new BadRequestException(error);
Run Code Online (Sandbox Code Playgroud)
或者你可以使用
throw new HttpException('Forbidden', HttpStatus.FORBIDDEN);
Run Code Online (Sandbox Code Playgroud)
那将会返回
{
"statusCode": 403,
"message": "Forbidden"
}
Run Code Online (Sandbox Code Playgroud)
文档: https: //docs.nestjs.com/exception-filters
Art*_*sun 21
因此,返回 http 状态代码的完整示例既不抛出错误,也不通过 static @HttpCode()
:
import { Post, Res, HttpStatus } from '@nestjs/common';
import { Response } from 'express';
...
@Post()
save(@Res() response: Response) {
response
.status(HttpStatus.BAD_REQUEST)
.send("saving " + JSON.stringify(body));
}
Run Code Online (Sandbox Code Playgroud)
您需要使用@Res()
装饰器来获取底层express
Response
对象并使用它的status()
方法。
虽然我仍然想知道是否有其他方法不涉及操作有状态对象,而只是像在 spring 中那样在 Nestjs 中进行干净的返回......
小智 9
无论您要编写什么代码,它都会出现在您的响应中
@HttpCode(204)
create() {
return 'This action adds a new cat';
}
Run Code Online (Sandbox Code Playgroud)
您始终可以抛出错误并让 Nest 为您处理错误代码。该文档详细介绍了已定义的错误,并且它们是常见的 HTTP 错误,因此它们遵循预期的代码。或者您可以按照文档中的语法抛出自己的错误
归档时间: |
|
查看次数: |
79527 次 |
最近记录: |