Можно ли переслать полученный элемент MultiPartFile из ресурса REST в клиент Feign и ожидать, что он будет работать?
Я нахожусь в ситуации, когда мне нужно получить запрос MultiPartFile от клиента через Шлюз API в моем микросервисе, затем передайте его внешней службе и после получения ответа от внешней службы необходимо выполнить некоторые дополнительные операции в основной промежуточной микросервисе и ответить клиенту.
API-интерфейс REST для микросервиса:
@RestController
@RequestMapping("/api")
public class VisionApiTestResource {
....
@PostMapping("/vision-test/upload-image")
public ResponseEntity<VisionApiTestResultDTO> handleFileUpload(@RequestParam("file") MultipartFile file ) {
VisionApiTestResultDTO visionApiTestResultDTO = visionApiTestService.testVisionApi(file);
return ResponseEntity.ok().body(visionApiTestResultDTO);
}
....
}
Служба, которая вызывает клиента Feign
@Service
public class VisionApiTestService {
...
public VisionApiTestResultDTO testVisionApi(MultipartFile multipartFile) {
BackgroundRemoverResultDTO backgroundRemoverResultDTO = backgroundRemoverClient.removeBackground(multipartFile);
...
}
}
Мой клиент Feign:
@FeignClient(name = "BackgroundRemover", url = "http://localhost:8000")
public interface BackgroundRemoverClient {
@RequestMapping(value = "/background_removal/remove_background/", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
BackgroundRemoverResultDTO removeBackground(@RequestPart("file") MultipartFile untouchedImageFile);
}
, и это исключение, которое я получаю:
java.lang.IllegalArgumentException: Illegal base64 character 3a
at java.util.Base64$Decoder.decode0(Base64.java:714)
at java.util.Base64$Decoder.decode(Base64.java:526)
at java.util.Base64$Decoder.decode(Base64.java:549)
at com.whereandshare.kiosk.kioskservice.service.VisionApiTestService.testVisionApi(VisionApiTestService.java:37)
at com.whereandshare.kiosk.kioskservice.service.VisionApiTestService$$FastClassBySpringCGLIB$$193667fb.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)