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