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

如何使用Spring GraphQL Client获取Flux类型的对象集合?

使用Spring GraphQL Client接收Flux类型对象集合

1. 初始化HttpGraphQlClient

首先通过WebClient构建HttpGraphQlClient实例,指定GraphQL服务的端点:

import org.springframework.graphql.client.HttpGraphQlClient;
import org.springframework.web.reactive.function.client.WebClient;

WebClient webClient = WebClient.builder()
        .baseUrl("http://your-graphql-server/graphql")
        .build();

HttpGraphQlClient graphQlClient = HttpGraphQlClient.create(webClient);

2. 定义GraphQL查询

可以直接内联查询语句,也可以将查询放在resources/graphql-documents目录下的.graphql文件中。例如查询用户列表的语句:

query GetAllUsers {
  users {
    id
    name
    email
  }
}

3. 执行查询并获取Flux

使用retrieveFlux方法指定响应数据的路径,将结果映射为实体类的Flux集合:

import reactor.core.publisher.Flux;

// 对应GraphQL返回字段的实体类
class User {
    private String id;
    private String name;
    private String email;

    // 生成getter、setter及构造方法
}

// 方式1:使用内联查询
Flux<User> userFlux = graphQlClient.document("""
        query GetAllUsers {
          users {
            id
            name
            email
          }
        }
        """)
        .retrieveFlux("users") // 指定data下的users字段路径
        .toEntity(User.class);

// 方式2:使用外部查询文件(文件路径:resources/graphql-documents/getAllUsers.graphql)
Flux<User> userFlux = graphQlClient.documentName("getAllUsers")
        .retrieveFlux("users")
        .toEntity(User.class);

关键说明

  • retrieveFlux(String path):该方法直接返回Flux类型的结果,适用于GraphQL返回集合数据的场景,path参数对应响应data对象中的字段路径。
  • toEntity(Class<T> entityType):将JSON格式的响应数据映射为指定的实体类对象。

内容的提问来源于stack exchange,提问作者Francis Anyuru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:40:54