java后端调用GraphQl接口获取结果

介绍就不多说了,直接上代码吧,实际运用中遇到的

1.可以用postman测试,核对你代码查询结果

2.导入jar包

<!-- https://mvnrepository.com/artifact/org.mountcloud/graphql-client -->
<dependency>
    <groupId>org.mountcloud</groupId>
    <artifactId>graphql-client</artifactId>
    <version>1.2</version>
</dependency>

3.后端查询,代码部分参数如图所示

例1

String serverUrl = "http://localhost:8082/graphql";
GraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(serverUrl);
String queryMethodName = "findOneAuthor "; 
GraphqlQuery query = new DefaultGraphqlQuery(queryMethodName);
query.addParameter("id",1);
query.addResultAttributes("firstName","lastName");
GraphqlResponse response = graphqlClient.doQuery(query);
//获取数据,数据为map类型
Map result = response.getData();

........

例2

public static void graphQLQuery(){
      String serverUrl = "http://localhost:8082/graphql";
      GraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(serverUrl);
      String queryMethodName = "findAuthorsByFilter"; 
      GraphqlQuery query = new DefaultGraphqlQuery(queryMethodName);
     //数组里面可以是具体的某个对象(比如User对象),也可是是Map,但是里面包含的key值,需要与接口方式里面能接收的参数对应,如下所示
      List<Map<String,Object>> filterList = new ArrayList<>();
      Map<String,Object> map1 =new HashMap<>();
      map1.put("firstName","Jim");//User.firstName = Jim
      map1.put("lastName","Green");//User.lastName= Green
      filterList.add(map1);
     //此步骤要注意,如果入参非基本类型,建议使用addObjectParameter方式,
     // 很奇怪,不能直接query.addObjectParameter(...),需要放在非第一个参数位置
     // 疑问,要是没有其他参数,这个方法不就是不能使用了 ??有时间了研究一下
      query.addParameter("first",3).addObjectParameter("filter",filterList);
      query.addResultAttributes("firstName","lastName");
      try {
         //执行query
         GraphqlResponse response = graphqlClient.doQuery(query);
         //获取数据,数据为map类型
         Map result = response.getData();
         Map m2 = (Map)result.get("data");
         List<Map> findAllAuthors = (List<Map>)m2.get(queryMethodName);
         for (Map map:findAllAuthors){
            System.out.println(map.get("firstName").toString()+"----" +map.get("lastName").toString());
         }

      } catch (IOException e) {
         e.printStackTrace();
      }
   }

参照

https://my.oschina.net/genghz/blog/1789240?from=groupmessage

https://blog.csdn.net/zhanghaishan/article/details/79845594

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章