首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个字段解析器使用不同的查询参数解析相同的rest API

多个字段解析器使用不同的查询参数解析相同的rest API
EN

Stack Overflow用户
提问于 2019-05-16 14:37:19
回答 1查看 884关注 0票数 0

我们计划使用graphql进行编排(例如,UI客户端调用graphql服务,该服务转到多个rest端点并返回结果)。这里的问题来自一个rest端点,我们必须根据客户端请求的字段传递不同类型的查询参数。

我们使用spring-boot-graphql和graphql-java-tools库来初始化graphql

代码语言:javascript
复制
type Query{
  user(id: ID): User
}

type User{
 phone: [Phone]
 address: [Address]
}

type Phone{...}
type Address{...}

我的代码解析用户字段并调用rest端点在单个调用中获取电话和地址信息,如https:restservice.com\v1\user\123?fields=phone,地址

如何解析来自同一个rest服务的两个期望数据的字段。我想要一些东西,比如当客户端请求电话时,我需要在请求参数中发送字段作为电话,而不是地址。我们能做到吗?或者,有没有其他方法可以定义模式来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-05-20 14:51:32

代码语言:javascript
复制
query {
    user(userId : "xyz")  {
        name
        age
        weight
        friends {
            name
        }
    }
}

了解字段选择集有助于提高DataFetchers的效率。例如,在上面的查询中,假设用户字段由SQL数据库系统支持。数据获取器可以预先查看字段选择集并使用不同的查询,因为它知道呼叫者需要朋友信息以及用户信息。

代码语言:javascript
复制
    DataFetcher smartUserDF = new DataFetcher() {
        @Override
        public Object get(DataFetchingEnvironment env) {
            String userId = env.getArgument("userId");

            DataFetchingFieldSelectionSet selectionSet = env.getSelectionSet();
            if (selectionSet.contains("user/*")) {
                return getUserAndTheirFriends(userId);
            } else {
                return getUser(userId);
            }
        }
    };

https://www.graphql-java.com/documentation/v12/fieldselection/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56162246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档