繁体   English   中英

即使服务器出错,ResponseBuilder 也会给出 200 OK HTTP 响应

[英]ResponseBuilder gives 200 OK HTTP response even for server error

我正在使用 javax.ws.rs.core.Response api 来构建响应并将响应从我的 Spring Boot 后端发送回前端。 我有一个控制器如下。

@GetMapping(value = "/details")
public Response getDetails() throws ServiceException {
    try {
        //logic to get details
        return Response.status(Response.Status.OK).entity(details).build();

    } catch (Exception e) {
        log.error(e.getMessage());
        return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage).build();
    }

}

但是即使在出现异常的情况下,我也得到 200 OK 作为浏览器/邮递员中 HTTP 请求的响应状态。 正因为如此,当出现异常时,ajax成功块而不是错误块被执行。 在这种情况下,有没有办法让错误块执行? 我不想抛出异常,因为它在响应中发送整个堆栈跟踪。

@GetMapping来自 spring mvc,而 spring-mvc 不符合 JAX-RS。 所以不要混合使用它们。 使用纯 spring-mvc 或纯 JAX-RS 。 您可以尝试返回一个 spring-mvc ResponseEntity (相当于 JAX-RS Response ):

@GetMapping(value = "/details")
public ResponseEntity getDetails() throws ServiceException {
    try {
        //logic to get details
        return ResponseEntity.ok(details);

    } catch (Exception e) {
        log.error(e.getMessage());
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage);
    }

}


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM