Reputation: 111
I'm trying to combine 2 or more services and I want to check statuses of them and return custom response. For example one of them returns 200 and the other returns 500, 404, 400 and etc. In this case I want to return empty list. The example below is only valid when all services returning 200
@RestController
@RequiredArgsConstructor
public class Demo3Controller {
private final Demo1Client demo1Client;
private final Demo2Client demo2Client;
@GetMapping("/demo3")
public String get(){
return demo1Client.getDemo1() + "&&" + demo2Client.getDemo2();
}
}
Upvotes: 9
Views: 18937
Reputation: 1365
Alternatively, you can catch the FeignException object which has a status code on it and return a correct response object or new exception that is mapped to the explicit error code. That exception will be thrown for any 4XX or 5XX returns. See the docs here:
https://javadoc.io/doc/io.github.openfeign/feign-core/11.0/feign/FeignException.html
Upvotes: 0
Reputation: 4114
Feign can also return the whole response (ResponseEntity), instead of the body object. So, you can refactor your Feign client like this:
@FeignClient
public interface Demo1Client {
public ResponseEntity<String> getDemo1();
}
after that, you can get the status code and body by:
ResponseEntity<String> response = demo1Client.getDemo1();
response.getStatusCodeValue();
response.getBody();
Upvotes: 22