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

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