【发布时间】:2022-01-15 17:44:19
【问题描述】:
我有一个 springboot 微服务,它是使用 graphql 技术实现的,并公开了一个 mutation 作为端点来上传文件和其他文件相关信息。
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
同样通过邮递员实现,
我知道调用这个突变端点并从 UI 上传文件很容易,因为有许多好的客户端可用于 UI,但我必须从另一个 springboot 微服务调用这个突变,该微服务的文件为 InputStream 和FileInfo 存储在 HashMap
如何通过 java 代码实现这一点?我们可以创建一个 restTemplate.exchange 或 restTemplate.postForEntity http 请求,以 MediaType.MULTIPART_FORM_DATA 作为内容类型来实现这一点吗?一个代码 sn-p 会非常有用。
【问题讨论】:
标签: java spring-boot http graphql