通过OpenFeign调用接口,我们期望的是返回200响应码,但是现实中总会返回其他状态码的,对于返回其他状态码时如何处理,OpenFeign也为我们提供了自定义解析的方式。

自定义ErrorCoder

  1. public class MyErrorDecoder implements ErrorDecoder {
  2. @Override
  3. public Exception decode(String methodKey, Response response) {
  4. //打印执行的方法 ProviderClient#test()
  5. System.out.println(methodKey);
  6. if(response.status()<500){
  7. //自定义异常抛出
  8. return new Exception("非服务器异常");
  9. }else {
  10. return new Exception("服务器异常");
  11. }
  12. }
  13. }
  1. public class ProviderClientConfiguration {
  2. @Bean
  3. public ErrorDecoder myErroDecoder(){
  4. return new MyErrorDecoder();
  5. }
  6. }

通过Yaml方式当然也可以: feign:
client:
config:
default:
loggerLevel: BASIC
_#decode404: true
_errorDecoder: com.gao.consumernacosdemotimeout.config.MyErrorDecoder

ErrorCoder方法入参

  1. methodKey:Feign类名#Feign方法名
  2. Response:响应信息