5

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();
    }

}
ElbrusGarayev
  • 91
  • 1
  • 1
  • 7

2 Answers2

15

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();
csenga
  • 3,819
  • 1
  • 21
  • 31
0

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://appdoc.app/artifact/io.github.openfeign/feign-core/9.3.0/feign/FeignException.html

Taugenichts
  • 1,307
  • 12
  • 19