我正在使用带有RestTemplate
的SpringBoot与另一个应用程序通信。但是,我无法更改其API,并且此外部服务始终返回200OK
返回代码。
默认情况下,我们有ResponseErrorHandler
可以对所有4xx
和5xx
响应代码做出反应,但是在我的情况下,当我遇到异常时,我会得到带有一个JSON字段的200OK
errors
。
我创建了一个自定义错误处理程序,并使用以下方法将其捆绑到我的rest模板中:
restTemplate.errorHandler(new MyCustomErrorHandler());
我也重写了hasError()
方法,但是在内部我必须解析该对象以检查它是否包含有错误的字段...
这是错误处理的好方法吗?我应该解析两次响应吗?我寻求针对此类问题的干净解决方案,但我希望避免每次使用外部服务时都两次解析消息
答案 0 :(得分:1)
仅当返回错误状态时才会调用错误处理程序,200不是错误状态,因此不会对其进行处理。
您可以通过重写hasError方法ResponseErrorHandler来检查错误消息或任何错误指示,从而更改此行为。
public class MyCustomErrorHandler implements ResponseErrorHandler {
@Override
public boolean hasError(ClientHttpResponse httpResponse)
throws IOException {
//TODO check your criteria for error
}