如何使用Spring GraphQlClient实现文件上传?
使用Spring GraphQlClient实现GraphQL文件上传
完全可以通过GraphQlClient实现GraphQL文件上传功能,Spring GraphQL客户端本身支持符合GraphQL Multipart Request规范的文件上传,只是官方文档里这块的说明比较少。
具体实现步骤如下:
- 先确认项目里已经引入了正确的依赖:如果是Spring Boot项目,引入
spring-boot-starter-graphql即可,底层默认使用的WebClient或RestClient都支持多部分请求,能满足文件上传需求。 - 构建包含文件的GraphQL请求:
- 先定义对应的上传Mutation,对应你要调用的处方添加服务,大致结构如下:
mutation AddPrescription($file: Upload!, $prescriptionData: PrescriptionInput!) { addPrescription(file: $file, prescriptionData: $prescriptionData) { id status } } - 使用GraphQlClient发起请求时,把文件包装成
Resource类型的参数传入,示例代码:// 本地文件转成Resource对象 Resource fileResource = new FileSystemResource("/path/to/your/prescription-file.pdf"); // 组装请求参数 Map<String, Object> variables = new HashMap<>(); variables.put("file", fileResource); variables.put("prescriptionData", yourPrescriptionInputObject); // 替换为你的处方数据对象 // 执行请求并处理响应 GraphQlClient.Response response = graphQlClient.documentName("addPrescription") .variables(variables) .execute() .block(); if (response.isValid()) { PrescriptionResult result = response.field("addPrescription").toEntity(PrescriptionResult.class); // 后续处理返回结果 }
- 先定义对应的上传Mutation,对应你要调用的处方添加服务,大致结构如下:
- 关键注意点:
- 你要调用的处方上传服务必须遵循GraphQL Multipart Request规范,否则客户端的上传请求会失败。
- 如果自定义了GraphQlClient的底层HTTP客户端,要确保它能正确处理
multipart/form-data类型的请求,默认的WebClient已经做了适配,不用额外配置。
内容的提问来源于stack exchange,提问作者Thiago Sayão
相关产品推荐
相关产品推荐

