[에러] Feign Client로 multipart/form-data 보낼 때 required part ... is not present 오류 해결법

에러 상황

@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
[그림 1] 에러

 

"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

반응형

댓글

Designed by JB FACTORY