gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:13:42 26 4
gpt4 key购买 nike

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

@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 作为浏览器/ postman 中 HTTP 请求的响应状态。因此,当出现异常时,会执行 ajax 成功 block 而不是错误 block 。在这种情况下有什么办法可以让错误 block 执行吗?我不想抛出异常,因为它在响应中发送整个堆栈跟踪。

最佳答案

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

}


关于java - 即使服务器出现错误,ResponseBuilder 也会给出 200 OK HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180878/

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