You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Spring GraphQlClient实现文件上传?

使用Spring GraphQlClient实现GraphQL文件上传

完全可以通过GraphQlClient实现GraphQL文件上传功能,Spring GraphQL客户端本身支持符合GraphQL Multipart Request规范的文件上传,只是官方文档里这块的说明比较少。

具体实现步骤如下:

  • 先确认项目里已经引入了正确的依赖:如果是Spring Boot项目,引入spring-boot-starter-graphql即可,底层默认使用的WebClient或RestClient都支持多部分请求,能满足文件上传需求。
  • 构建包含文件的GraphQL请求:
    1. 先定义对应的上传Mutation,对应你要调用的处方添加服务,大致结构如下:
      mutation AddPrescription($file: Upload!, $prescriptionData: PrescriptionInput!) {
        addPrescription(file: $file, prescriptionData: $prescriptionData) {
          id
          status
        }
      }
      
    2. 使用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);
          // 后续处理返回结果
      }
      
  • 关键注意点:
    • 你要调用的处方上传服务必须遵循GraphQL Multipart Request规范,否则客户端的上传请求会失败。
    • 如果自定义了GraphQlClient的底层HTTP客户端,要确保它能正确处理multipart/form-data类型的请求,默认的WebClient已经做了适配,不用额外配置。

内容的提问来源于stack exchange,提问作者Thiago Sayão

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:55:14