Spring 启动 HTTP 状态而不抛出异常

Spring Boot HTTP status without throwing exceptions

我想在不使用 @ExceptionHandler 注释的情况下 return 除 200 之外的 HTTP 状态。

原因是并非每次调用我的应用程序(导致状态不正常)都应该抛出异常,至少在我看来不是。

例如,如果用户试图登录系统,但提供了不准确的密码,我认为没有理由为了能够 return 401 而抛出异常状态。相反,我希望能够从 "regular" 方法中 return 状态。

这背后的原因是抛出不必要的异常既扰乱了我的日志文件,也扰乱了我的日志聚合器 (Rollbar/Sentry) 的每月津贴 "uses"。

我试过使用 @ResponseStatus@ResponseBody 注释方法,但没有成功。

我四处寻找有关该问题的博客文章或其他文章,但找不到任何内容。

知道这是否可行吗?

您可以使用 RessponseEntity。将 /*STATUS CODE*/ 替换为您想要的任何内容:

@GetMapping("/url")
@ResponseBody
public ResponseEntity<?> handlerMethod(/*parameters*/) {
    // ...
    return ResponseEntity.status(/*STATUS CODE*/).body(...);
}

看看下面的例子

@RestController
public class HelloWorldController {

    @GetMapping("/hello")
    public ResponseEntity<String> sayHello() {

        return ResponseEntity.status(HttpStatus.CREATED).body("Hello World!");

    }
 }