O FeignClient lança em vez de retornar ResponseEntity com status http de erro
Como eu estou usandoResponseEntity<T>
como valor de retorno para o meu método FeignClient, eu esperava que ele retornasse um ResponseEntity com status 400, se for o que o servidor retornará. Mas, em vez disso, lança umFeignException
.
Como posso obter um ResponseEntity adequado em vez de uma exceção do FeignClient?
Aqui está o meu FeignClient:
@FeignClient(value = "uaa", configuration = OauthFeignClient.Conf.class)
public interface OauthFeignClient {
@RequestMapping(
value = "/oauth/token",
method = RequestMethod.POST,
consumes = MULTIPART_FORM_DATA_VALUE,
produces = APPLICATION_JSON_VALUE)
ResponseEntity<OauthTokenResponse> token(Map<String, ?> formParams);
class Conf {
@Value("${oauth.client.password}")
String oauthClientPassword;
@Bean
public Encoder feignFormEncoder() {
return new SpringFormEncoder();
}
@Bean
public Contract feignContract() {
return new SpringMvcContract();
}
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor("web-client", oauthClientPassword);
}
}
}
e aqui como eu o uso:
@PostMapping("/login")
public ResponseEntity<LoginTokenPair> getTokens(@RequestBody @Valid LoginRequest userCredentials) {
Map<String, String> formData = new HashMap<>();
ResponseEntity<OauthTokenResponse> response = oauthFeignClient.token(formData);
//code never reached if contacted service returns a 400
...
}