当前位置: 首页 > 知识库问答 >
问题:

多个字段解析器用不同的查询参数解析相同的其余API

糜野
2023-03-14

我们正计划将Graphql用于编排(For e.用户界面客户端调用图形ql服务,该服务转到多个Restendpoint并返回结果)。这里的问题是,从一个Restendpoint,我们必须根据客户端请求的字段传递不同类型的查询参数。

我们使用Spring Bootgraphql和graphql java工具库来初始化graphql

type Query{
  user(id: ID): User
}

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

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

我的代码解析用户字段并调用restendpoint,以便在一次调用(如https:restservice)中获取电话和地址信息。com\v1\user\123?字段=电话、地址

如何解决两个字段期待来自相同的Rest服务的数据。我想当客户端请求电话,然后我需要发送请求参数中的字段作为电话单独没有地址。我们能做到吗?或者有没有其他方法来定义模式来解决这个问题?

共有1个答案

袁恩
2023-03-14
query {
    user(userId : "xyz")  {
        name
        age
        weight
        friends {
            name
        }
    }
}

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

    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/

 类似资料:
  • 鉴于以下类: 和以下设置: 当我尝试解析ServiceA和ServiceB时,它们都得到一个具有相同URL的HttpClient。 我如何更改DI中的注册,使每个服务都得到正确的HttpClient注入? TIA /Søren

  • 我在ES7.8中创建了一个日期格式为“YYYY-MM-DD”的索引。 然而,当我点击地图上的“基线”字段时,在Filter上传递的实际值是yyyy-mm-dd00:00:00.000z。 有没有人可以建议一下,我怎样才能在过滤器中得到正确的日期格式“YYYY-MM-DD”? 多谢了。 下面是请求中的示例文档 “命中”:[{“_index”:“program_b”,“_type”:“_doc”,“_

  • 使用JDBC驱动程序,我如何使用来自不同查询的多个结果集,而不不断地打开和关闭连接,因为我正在提取所需的w.e并将其传递给另一个方法。每次打开新的conn、语句和结果集时 我试图在一个方法中使用多个结果集,但它一直抛出异常,称结果集已关闭。我没有太多的SqlServver经验,所以任何指导都会有所帮助:-)

  • 我有一个POJO,它有一个字段: 当将一个json响应解析到这个资产POJO中时,一切工作都很完美。但是,与此资产附带的关键字有一个细微的区别。它可以是: 或 有没有一种方法来注释POJO来识别这个案例并反序列化到相同的字段中。两者不可能出现在相同的答复中。

  • 我想知道在使用CsvRoutines包时,是否有方法检查和验证字段。基本上,如果第一列只有数字,我想处理一行,否则跳过/可能抛出异常。我猜2.7.0中发布的@Validate annotation可以实现这一点。但我想知道,是否有其他方法可以在早期版本(如2.5.9)中实现同样的效果?

  • 问题内容: 我有一个POJO,其中包含一个字段: 将json响应解析到此资产POJO时,一切工作正常。但是此资产随附的密钥略有不同。可以是: 要么 有没有一种方法可以注释POJO以识别这种情况并反序列化到同一字段中。他们不可能出现在相同的响应中。 问题答案: 好吧,因为只有反序列化才是您关心的问题,所以引入in十分适合这种情况。您可以执行以下操作: docs: 可用于定义属性的一个或多个替代名称的