如何禁用Spring boots默认错误处理?
我已经尝试过禁用Spring引导w/c抛出的默认错误处理 { “时间戳”:1575346220347, “地位”:500, “错误”:“内部服务器错误”, “异常”:“org.springframework.web.client.HttpClientErrorException”, “消息”:“401未经授权”, “路径”:“/auth/login”} 通过添加ff。配置如何禁用Spring boots默认错误处理?,spring,spring-boot,Spring,Spring Boot,我已经尝试过禁用Spring引导w/c抛出的默认错误处理 { “时间戳”:1575346220347, “地位”:500, “错误”:“内部服务器错误”, “异常”:“org.springframework.web.client.HttpClientErrorException”, “消息”:“401未经授权”, “路径”:“/auth/login”} 通过添加ff。配置 @SpringBootApplication(exclude = ErrorMvcAutoConfiguration.
@SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class)
及
但是我得到的是一堆HTML格式的响应,而不是它应该从服务器得到的JSON响应 您可以使用控制器建议生成全局异常处理程序。在ControllerAdvice类中,可以使用@ExceptionHandler注释来处理异常。这是一篇关于ControllerAdvice的好文章 我无法禁用SpringBoots对错误响应的自动处理,但是我可以通过将Rest模板请求包装在一个try-catch中并在Rest模板中使用一个库来获得正确的JSON错误响应,因为Rest模板中有一个bug不允许我检索响应主体 从 到 试着抓住包装
ResponseEntity resp = null;
try{
resp = restTemplate.postForEntity(hostUrl+loginUrl, request,Object.class);
}catch(HttpClientErrorException e) {
ErrorDto result = new ObjectMapper().readValue(e.getResponseBodyAsString(), ErrorDto.class);
return new ResponseEntity<>(result, e.getStatusCode());
}
private final RestTemplate restTemplate = new RestTemplate();
private final RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
ResponseEntity resp = null;
try{
resp = restTemplate.postForEntity(hostUrl+loginUrl, request,Object.class);
}catch(HttpClientErrorException e) {
ErrorDto result = new ObjectMapper().readValue(e.getResponseBodyAsString(), ErrorDto.class);
return new ResponseEntity<>(result, e.getStatusCode());
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class ErrorDto {
@JsonProperty("Message")
private String message;
@JsonProperty("Reason")
private String reason;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}