에러 상황
@FeignClient
public interface SomeApi{
@PostMapping("/my/test", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
void postSomthing(
@RequestPart MultipartFile uploadFiles,
@RequestPart MyDto myDto
);
}
상황은 위와 같이 Multipart/form-data를 MultipartFile 하나와 내가 정의한 Dto 하나를 파라미터로 전송하는 것이였다.
구글링을 통해 @RequestBody나 @RequestParam 대신 @RequestPart를 사용하면 된다는 정보를 얻고 위와 같이
코드를 작성하였다.
그런데 아래와 같은 에러가 발생했다.
"Required part ... is not present" 라는 에러가 발생했다.
아마 해당 dto의 이름을 인식하지 못했거나 타입 인식을 못한 것 같아 여러가지 시도해보았지만 제대로 되지 않았다.
그러다 스택오버플로우에서 해결법을 찾을 수 있었다.
해결 방법
public class SomethingApiConfig {
@Bean
JsonFormWriter jsonFormWriter() {
return new JsonFormWriter();
}
}
몇시간을 헤맸는데 해결 방법은 매우 간단했다.
그냥 FeigntClient의 configuration 클래스에 위와 같이 JsonFormWriter를 빈으로 등록만해주면 해결된다.
검색해도 잘 나오지 않으니 이 글을 보고
다른 사람에게 도움이 되면 좋겠다.
참고
1. https://stackoverflow.com/questions/63070641/feign-multipart-with-json-request-part
반응형