Это сохраняет заголовки и код состояния, но сообщение об ошибке теряется: /
используюResponseEntity<T>
в качестве возвращаемого значения для моего метода FeignClient я ожидал, что он вернет ResponseEntity со статусом 400, если это то, что возвращает сервер. Но вместо этого он бросаетFeignException
.
Как я могу получить надлежащий ResponseEntity вместо исключения от FeignClient?
Вот мой 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);
}
}
}
и вот как я это использую:
@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
...
}