Spring Boot RestTemplate 兼容处理非 200 状态码的请求
Spring Boot RestTemplate About 1,040 words需求
RestTemplate
在处理状态码非200
请求时,会抛出异常,需兼容处理异常。如:下游服务返回错误状态码401
,而RestTemplate
会直接报错。
代码
主要是设置RestTemplate
的ErrorHandler
。默认的错误处理器是DefaultResponseErrorHandler
,它会判断HTTP
状态码是否是400
系列和500
系列错误,
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new ResponseErrorHandler() {
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
System.out.println("has error: " + response);
return false;
}
@Override
public void handleError(ClientHttpResponse response) throws IOException {
System.out.println("handler error: " + response);
}
});
RequestEntity<?> requestEntity = new RequestEntity<>(HttpMethod.GET, URI.create("http://localhost:8081/api/test"));
ResponseEntity<?> response = restTemplate.exchange(requestEntity, Object.class);
备注
如果指定转换的是Object
对象,则会返回下游服务返回的内容。
如果指定转换的不是Object
对象,而是特定的对象,如:Response
。
(状态码会跟随下游服务返回的状态码)
@Data
public class Response {
private String id;
private String name;
}
则会返回字段都会null
的JSON
字符串。
{"id":null,"name":null}
Views: 923 · Posted: 2024-04-06
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...