如何实现对外部客户机的状态检查?

wmomyfyw  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(275)

我正在尝试合并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();
    }

}
okxuctiv

okxuctiv1#

feign也可以返回整个响应(responseentity),而不是body对象。因此,您可以像这样重构您的假客户机:

@FeignClient
public interface Demo1Client {

    public ResponseEntity<String> getDemo1();
}

之后,您可以通过以下方式获取状态代码和正文:

ResponseEntity<String> response = demo1Client.getDemo1();
response.getStatusCodeValue();
response.getBody();
myzjeezk

myzjeezk2#

或者,您可以捕获具有状态代码的feignexception对象,并返回正确的响应对象或Map到显式错误代码的新异常。对于任何4xx或5xx返回,都将抛出该异常。请参见此处的文档:https://appdoc.app/artifact/io.github.openfeign/feign-core/9.3.0/feign/feignexception.html

相关问题