具有 Rest 服务在其响应中返回的错误状态代码的 ResponseEntity 对象始终在调用方中导致异常



我有两个弹簧启动休息服务。一个叫另一个。

被调用方在发生任何内部错误时返回这样的响应(以这种方式编程(

ResponseEntity<String> responseEntity = new ResponseEntity<String>(jsonString, responseHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
return responseEntity;
呼叫者像

这样呼叫另一个被呼叫者:

ResponseEntity<String> responseEntity ;
try {
    responseEntity = restTemplate.postForEntity(url, entity, String.class);
    if (responseEntity.getStatusCode() != "200"{
         //do something here
    }
    else{
     //do something else here
    }
}
catch(Exception ex){
   //do something here
}

现在的问题是,每当被调用方在返回的 ResponseEntity 对象(如 INTERNAL_ERROR(中插入错误 HttpStatus 代码时,它总是在调用方中引发和异常,并进入调用方的 catch 块。如果它返回 200,则调用方中的所有内容都变得笨拙。

我的问题是,为什么当被调用方在响应实体返回对象中插入错误的 HttpStatus 代码时,它会在调用方中引发异常,为什么我不能只在调用方中获取响应实体对象,而不管被调用方插入的 HttpStatus 代码如何?

正如您在 RestTemplate 文档中看到的那样,默认情况下它使用 DefaultResponseErrorHandler,如果发生错误,它最终会引发异常。

此模板使用 SimpleClientHttpRequestFactory 和 DefaultResponseErrorHandler 作为分别创建 HTTP 连接或处理 HTTP 错误的默认策略。

如果您不需要此逻辑,可以通过 RestTemplate#setErrorHandler 设置自定义错误处理程序

相关内容

  • 没有找到相关文章

最新更新