[英]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.