gpt4 book ai didi

java - 发生特定异常时如何返回 HTTP 400 响应?

转载 作者:行者123 更新时间:2023-12-04 14:25:15 24 4
gpt4 key购买 nike

我正在使用 spring MVC 和关系数据库。 Spring 写入的其中一个表具有按预期工作的唯一性约束。

现在,如果一个请求进入并违反了该约束,则会抛出异常 org.springframework.dao.DuplicateKeyException 并返回 HTTP 500 响应(内部服务器错误),但实际上没有系统问题,但应用户要求。

捕获异常并返回 HTTP 400(错误请求)的最自然方法是什么?我实际上可以像这样捕获它:

@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity<BaseMaterial> insert(@RequestBody BaseMaterial baseMaterial) {
try {
baseMaterial.setId(UUID.randomUUID());
baseMaterialService.insert(baseMaterial);
return ResponseEntity.ok(baseMaterial);
} catch (DuplicateKeyException e) {
return ResponseEntity.badRequest().build();
}
}

但是我必须为我的每个端点都这样做。我也更喜欢只使用没有 ResponseEntity 包装器的 POJO。

谢谢!

最佳答案

我很抱歉回答了我自己的问题,但我发现我是什么 looking for on spring's blog .

在您的 Controller 类中,创建一个将在抛出所需异常时运行的方法,并使用 ExceptionHandlerResponseStatus 对其进行注释:

@ExceptionHandler(DuplicateKeyException.class)
@ResponseStatus(value = HttpStatus.CONFLICT, reason = "Data integrity violation") // 409
public void conflict() {
// code goes here
}

就是这样。没有其他变化!

关于java - 发生特定异常时如何返回 HTTP 400 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47037411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com