#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 как тип контента для достижения этой цели? фрагмент кода был бы очень полезен.