Java 不分析对象的Spring ResponseErrorHandler
我正在使用SpringBoot和Java 不分析对象的Spring ResponseErrorHandler,java,spring,http,resttemplate,Java,Spring,Http,Resttemplate,我正在使用SpringBoot和RestTemplate与另一个应用程序通信。但是,我无法更改其API,此外部服务始终返回200OK返回代码 默认情况下,我们有ResponseErrorHandler,它对所有4xx和5xx响应代码做出反应,但在我的情况下,当出现异常时,我会得到200OK,其中有一个JSON字段errors 我已经创建了一个自定义错误处理程序,并使用以下方法将其捆绑到我的rest模板中: restTemplate.errorHandler(new MyCustomErrorHa
RestTemplate
与另一个应用程序通信。但是,我无法更改其API,此外部服务始终返回200OK
返回代码
默认情况下,我们有ResponseErrorHandler
,它对所有4xx
和5xx
响应代码做出反应,但在我的情况下,当出现异常时,我会得到200OK
,其中有一个JSON字段errors
我已经创建了一个自定义错误处理程序,并使用以下方法将其捆绑到我的rest模板中:
restTemplate.errorHandler(new MyCustomErrorHandler());
我还重写了hasError()
方法,但在内部我必须解析这个对象,以检查它是否包含有错误的字段
这是错误处理的好方法吗?我应该解析两次响应吗?我为这些问题寻找干净的解决方案,但我希望避免每次使用外部服务时对消息进行两次解析只有在返回错误状态时才会调用错误处理程序,200不是错误状态,因此它不会被处理 您可以通过重写hasError方法ResponseErrorHandler来检查错误消息或任何错误指示来更改此行为
public class MyCustomErrorHandler implements ResponseErrorHandler {
@Override
public boolean hasError(ClientHttpResponse httpResponse)
throws IOException {
//TODO check your criteria for error
}
我确实这样做了,但在hasError中,我必须解析对Json对象的整个响应,以便检查错误字段。我忘了提那件事了。谢谢你指出这一点。