我有一个 SpringBoot 控制器,我想为异常返回正确的 http 代码状态。所以,我的问题是:对于异常“500”或“409”,哪个 http 状态代码更好?
这是我的代码:
@PostMapping(value = {"", "/"})
public ResponseEntity<Response> create(@RequestBody StudioDto studioDto,
ServletRequest servletRequest, ServletResponse servletResponse) {
Response response = new Response();
try {
studioService.createStudio(studioDto);
response.setMessage("The studio was create");
response.setStatusCode(HttpServletResponse.SC_CREATED);
} catch (Exception e) {
response.setMessage("Op we have a little problem");
response.setErrorMessage(e.getMessage());
//Which one
//this one 5xx
response.setStatusCode(500);
//Or this one 4xx
response.setStatusCode(409);
}
return new ResponseEntity(response, response.getHttpStatus());
}
原文由 Carlos Mario 发布,翻译遵循 CC BY-SA 4.0 许可协议
这不是处理异常的推荐方法,您应该使用控制器建议,检查此 链接
状态代码由特定场景定义,500 表示内部服务器错误,我将用于未指定原因的问题,对于 409,它类似于目标资源上的冲突
您还有许多其他适用于不同情况的状态代码,所以我想说没有特定的状态代码是正确的答案,您可以查看此 链接 以获取更多信息