Загрузите файл в микросервис springboot graphql из другого микросервиса springboot

#java #spring-boot #http #graphql

#Ява #пружинный ботинок #http #graphql

Вопрос:

У меня есть один микросервис springboot, который реализован с использованием технологии graphql и предоставляет мутацию в качестве конечной точки для загрузки файла и другой информации, связанной с файлами.

 mutation($file: Upload, $fileInfo: FileInfo) {  uploadFile(file: $file, fileInfo: $fileInfo) }  input FileInfo {  name: String  size: Int }  

Команда Curl для вызова этого,

 curl -v -L http://localhost:8087/graphql  -F operations='{ "query": "mutation($file: Upload, $fileInfo: FileInfo) { uploadFile(file: $file, fileInfo: $fileInfo)}", "variables": { "file": null, "fileInfo": {"name": "test.json", "size": 500} } }'  -F map='{ "0": ["variables.file"]}'  -F 0=test.json  

То же самое достигается с помощью почтальона,

введите описание изображения здесь

Я знаю, что легко вызвать эту конечную точку мутации и загрузить файл из пользовательского интерфейса, так как для пользовательского интерфейса доступно много хороших клиентов, но я должен вызвать эту мутацию из другого микросервиса springboot, в котором файл в виде входного потока и файловый файл хранятся в хэш-картеlt;Строка, объектgt;lt;Строка, объектgt;.

Как я могу добиться этого с помощью java-кода? можем ли мы создать http-запрос RestTemplate.exchange или RestTemplate.postForEntity с типом MediaType.MULTIPART_FORM_DATA как тип контента для достижения этой цели? фрагмент кода был бы очень полезен.