У меня есть микросервис A, который предоставляет контроллер, например, для вызовов внешнего интерфейса. Внутри контроллера я называю свой feignClient. Задача FeignClient - подключиться к выделенному микросервису B.
Controller:
private final ServiceClient serviceClient;
@RequestMapping(path="somepath", method = RequestMethod.POST)
public void ResponseEntity<Void> uploadFile(Dto dto, @RequestParam("file") MultipartFile){
return serviceClient.uploadFile(dto,file);
}
FeignClient:
public interface ServiceClient{
@RequestMapping(method=POST, path= "somepath")
ResponseEntity<Void> uploadFile(Dto dto, @RequestParam("file") Multipart file);
}
The controller of the microservice B has the same method parameters as the uploadFile Method of the ServiceClient.
При этой установке я получаю ошибку CurrentRequest is not a multipart request
. Я уже прочитал кое-что о StackOverflow, и люди предложили проверить заголовки, чтобы не добавлять контент-тип: application / json. Кроме того, я попытался использовать аннотацию @Headers пакета feign. Все, что не сработало.
Некоторые вопросы:
- Я вынужден использовать те же атрибуты метода в FeignClient, что и в микросервисе, к которому он подключается? Я прочитал кое-что об изменении аннотации с RequestParam на RequestPart. Означает ли это также поменять местами аннотации в микросервисе b?
- Я уже пытался поменять местами в Microservice A на @Multipart Annotation в Controller и FeignClient, чтобы выполнить что-то вроде развертывания try and error. Проблема здесь в том, что когда я пытаюсь построить проект с помощью Maven, я получаю следующую ошибку:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'Controller' defined in file ...: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'BeanName': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: Method has too many Body parameters: <UploadFile of ServiceClient>