如何解决如何实现feign客户端的状态检查?
我正在尝试组合 2 个或更多服务,我想检查它们的状态并返回自定义响应。例如,其中一个返回 200,另一个返回 500、404、400 等。在这种情况下,我想返回空列表。以下示例仅在所有服务返回 200 时有效
@RestController
@RequiredArgsConstructor
public class Demo3Controller {
private final Demo1Client demo1Client;
private final Demo2Client demo2Client;
@GetMapping("/demo3")
public String get(){
return demo1Client.getDemo1() + "&&" + demo2Client.getDemo2();
}
}
解决方法
Feign 还可以返回整个响应(ResponseEntity),而不是主体对象。所以,你可以像这样重构你的 Feign 客户端:
@FeignClient
public interface Demo1Client {
public ResponseEntity<String> getDemo1();
}
之后,您可以通过以下方式获取状态码和正文:
ResponseEntity<String> response = demo1Client.getDemo1();
response.getStatusCodeValue();
response.getBody();
,
或者,您可以捕获具有状态代码的 FeignException 对象,并返回正确的响应对象或映射到显式错误代码的新异常。任何 4XX 或 5XX 返回都会抛出该异常。请参阅此处的文档:https://appdoc.app/artifact/io.github.openfeign/feign-core/9.3.0/feign/FeignException.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。