我正在尝试组合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();
}
}
发布于 2021-04-19 19:42:40
Feign还可以返回整个响应(ResponseEntity),而不是body对象。所以,你可以像这样重构你的Feign客户端:
@FeignClient
public interface Demo1Client {
public ResponseEntity<String> getDemo1();
}
之后,您可以通过以下方式获取状态码和正文:
ResponseEntity<String> response = demo1Client.getDemo1();
response.getStatusCodeValue();
response.getBody();
发布于 2021-04-20 16:45:40
或者,您可以捕获具有状态代码的FeignException对象,并返回正确的响应对象或映射到显式错误代码的新异常。对于任何4XX或5XX返回,都会抛出该异常。请参阅此处的文档:https://appdoc.app/artifact/io.github.openfeign/feign-core/9.3.0/feign/FeignException.html
https://stackoverflow.com/questions/67160750
复制相似问题