문제 상황
spring-boot 프레임워크를 사용하는 서버(A)에서 다른 서버로 feign client를 통해 파일과 함께 json 형식의 데이터를 페이로드에 담아 요청하려고 할 때, 400 Bad Request Parameter 에러가 발생
- Content type: multipart/form-data
원인
feign으로 content-type이 multipart/form-data인 요청을 보낼 때 파일이 아닌 사용자 지정 POJO를 담게 되면 에러가 발생하는 이슈가 있었음.
해결
JsonFormWriter
를 사용해서 configuration에 빈으로 등록하면 된다!
class feignClientConfiguration {
@Bean
fun jsonFormWriter(): JsonFormWriter {
return JsonFormWriter()
}
}
참고한 openfeign 이슈: Allow @RequestPart user-defined POJOs #314
JsonFormWriter 분석:
JsonFormWriter
를 사용하면 객체를 string으로 변환해서 요청이 보내지게끔 처리가 된다.
관련 JsonFormWriter의 코드: https://github.com/spring-cloud/spring-cloud-openfeign/pull/314/files#diff-e9d712f747ccab80c570f8c2a2e56fd1d24415435db437257f5cef2537d9a108R43