如何实现假客户端的状态检查?

Elb*_*yev 7 spring spring-boot spring-cloud-feign 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();
    }

}
Run Code Online (Sandbox Code Playgroud)

cse*_*nga 17

Feign 还可以返回整个响应 ( ResponseEntity ),而不是主体对象。所以,你可以像这样重构你的 Feign 客户端:

@FeignClient
public interface Demo1Client {
    
    public ResponseEntity<String> getDemo1();
}
Run Code Online (Sandbox Code Playgroud)

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

ResponseEntity<String> response = demo1Client.getDemo1();
response.getStatusCodeValue();
response.getBody();
Run Code Online (Sandbox Code Playgroud)