一尘不染

异常的Http状态代码

spring-boot

我有一个SpringBoot控制器,并且我想为Exceptions返回正确的http代码状态。因此,我的问题是:哪种HTTP状态代码更适合Exception,那么“
500”或“ 409”哪个更好?

这是我的代码:

@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());
}

阅读 489

收藏
2020-05-30

共1个答案

一尘不染

这不是推荐的处理异常的方法,您应该使用控制器建议,请检查此链接

状态代码是由特定情况定义的,500表示内部服务器错误,我将使用它来解决未指定原因的问题;对于409,它会在目标资源上重新标记冲突

由于与目标资源的当前状态存在冲突,因此无法完成请求。此代码用于用户可能能够解决冲突并重新提交请求的情况

您还有许多其他适合不同情况的状态码,所以我想说没有特定的状态码是正确的答案,您可以查看此链接以获取更多信息

2020-05-30