Feign Client 사용시 form encoder 설정

2019-12-13

프로젝트에서 Unity로 만든 application과 back-end를 연결하는 Broker-api를 개발하게 되었다.
뭐 간단하게 api interface 맞춰서 전달하면 되겠네 라고 생각하며 작업을 진행했다.
api 호출은 당연히 feign client를 사용을 했다.
그러던 중 jpeg image file을 전달하는 api를 만들었는데(multipart/form-data)
다음과 같은 Exception을 만나게 되었다.

1
2
feign.codec.EncodeException: Could not write request: no suitable HttpMessageConverter found for request type .... and content type [multipart/form-data]
....

해결

HttpMessageConver 설정을 해준다

1
2
3
4
5
6
7
8
9
10
@Configuration
public class FeignClientConfig {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;

@Bean
public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
}

참고

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/HttpMessageConverter.html
https://supawer0728.github.io/2018/03/11/Spring-Cloud-Feign/