上传文件
Apollo Kotlin支持通过GraphQL多部分请求规范.
首先,将以下自定义标量映射添加到Apollo Gradle插件的配置中:
build.gradle[.kts]
apollo {service("service") {mapScalarToUpload("Upload")}}
在以下示例中,GraphQL 方案定义了一个名为Upload
的自定义标量类型。您可以根据需要为自己的方案选择不同的名称。
注意:您不需要为Upload
注册类型适配器,因为mapScalarToUpload
方法会自动进行注册。
现在,让我们考虑一个接收Upload
类型参数的mutation操作:
mutation SingleUpload($file: Upload!) {singleUpload(file: $file) {idpathfilenamemimetype}}
可以使用工厂方法之一创建Upload
的实例:
// If you're on Android/JVM, you can turn a File into an uploadval 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()