加入我们,于10月8日至10日在纽约市学习有关 GraphQL 联盟和 API 平台工程的最新技巧、趋势和新闻。参加2024年在纽约市的 GraphQL 峰会
文档
免费开始

上传文件


支持通过 GraphQL 多部分请求规范 存在以下几点注意事项:

  • 使用 上传文件通常适用于原型应用。在生产环境中,使用专为文件上传设计的工具可能更合适。请参阅以下 博客文章 了解可能的策略及其优点和缺点。
    • Apollo Router 核心和 GraphOS Router 都不支持 multipart/form-data 上传。

使用 Apollo Kotlin 上传文件

首先,将以下自定义 映射添加到 Apollo Gradle 插件配置中:

build.gradle[.kts]
apollo {
service("service") {
mapScalarToUpload("Upload")
}
}

在本例中,该 定义了一个名为 Upload 的自定义标量类型。根据需要,您可以为您的架构使用不同的名称。

注意

您不需要为 Upload 注册类型适配器,因为 mapScalarToUpload 方法会自动注册它。

现在让我们考虑一个接受 作为参数的 Upload

mutation SingleUpload($file: Upload!) {
singleUpload(file: $file) {
id
path
filename
mimetype
}
}

使用工厂方法之一创建一个 Upload 的实例:

// If you're on Android/JVM, you can turn a File into an upload
val upload = File.toUpload("application/json")
// On multiplatform, you can use `DefaultUpload`
val upload = DefaultUpload.Builder()
.fileName("filename.txt")
.content { sink ->
okioSource.use { sink.writeAll(it) }
}
.build()

执行您的 mutation

val response = apolloClient.mutation(SingleUploadMutation(file = upload)).execute()
上一个
Apollo 调试服务器
下一个
监控网络状态
评分文章评分在 GitHub 上编辑编辑论坛Discord

©2024Apollo Graph Inc.,商用名为 Apollo GraphQL。

隐私政策

公司