feign返回结果统一处理
时间: 2023-06-21 09:23:22 浏览: 130
2021Java大厂面试题——大厂真题之银盛支付-Java中级.pdf
5星 · 资源好评率100%
在使用 Feign 进行远程调用时,我们可以通过实现 `ErrorDecoder` 接口来统一处理返回结果。
首先,定义一个自定义的异常类,例如:
```java
public class FeignException extends RuntimeException {
private final int status;
public FeignException(int status, String message) {
super(message);
this.status = status;
}
public int getStatus() {
return status;
}
}
```
接着,实现 `ErrorDecoder` 接口,例如:
```java
public class CustomErrorDecoder implements ErrorDecoder {
private final ErrorDecoder defaultErrorDecoder = new Default();
@Override
public Exception decode(String methodKey, Response response) {
if (response.status() >= 400 && response.status() <= 499) {
throw new FeignException(response.status(), response.reason());
}
return defaultErrorDecoder.decode(methodKey, response);
}
}
```
最后,在使用 Feign 进行远程调用时,将自定义的异常类传入 Feign 的构造函数中,例如:
```java
MyService myService = Feign.builder()
.errorDecoder(new CustomErrorDecoder())
.target(MyService.class, "http://localhost:8080");
```
这样,当远程调用返回的状态码为 4xx 时,就会抛出我们自定义的异常,从而统一处理返回结果。
阅读全文