当前位置: 首页> 文旅> 旅游 > 附近的小程序怎么开通_web前端开发好学吗_泉州seo网站排名_个人友情链接推广

附近的小程序怎么开通_web前端开发好学吗_泉州seo网站排名_个人友情链接推广

时间:2025/8/8 3:29:59来源:https://blog.csdn.net/nonagontech/article/details/143524056 浏览次数:1次
附近的小程序怎么开通_web前端开发好学吗_泉州seo网站排名_个人友情链接推广

  GraphQL的逻辑如果在java实现感觉还是很复杂,因为其相当于一种组排的策略模式。好在不需要进行相应的实现,只需要调用别人的接口即可。

但java调用GraphQL接口的成熟客户端好像就只有一个,当我们去maven中央仓库寻找客户端依赖时发现好像就只有这一个客户端

 

进入该依赖库发现GitHub地址:GitHub - graphql-java/graphql-java: GraphQL Java implementation

我们找到官方文档,可以看到结构确实复杂,学习成本很高。

所以没必要浪费太多时间。我随后找到了私人开源作品:

pom:

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

同理 我们去maven仓库寻找GitHub开源地址:GitHub - MountCloud/graphql-client: graphql client for java

发现给的例子很少但是简洁明了也符合我们需求。

所以,java对GraphQL的请求都模仿自这里,我直接把文档的内容搬过来然后做个对比:

do query
//crate client
GraphqlClient client = GraphqlClient.buildGraphqlClient("http://localhost:8081/graphql");
//create http headers
Map<String,String> headers = new HashMap<String,String>();
headers.put("token","123");
client.setHttpHeaders(headers);
//create query
GraphqlQuery query = new DefaultGraphqlQuery("findUsers");
//add query or mutation param
query.addParameter("sex","man").addParameter("age",11);
//add query response basics attribute
query.addResultAttributes("id","name","age","sex");
//add query complex attributes
ResultAttributtes classAttributte = new ResultAttributtes("class");
classAttributte.addResultAttributes("name","code");
//attributes can be more complex
ResultAttributtes schoolAttributte = new ResultAttributtes("school");
schoolAttributte.addResultAttributes("name");
//class add school attribute
classAttributte.addResultAttributes(schoolAttributte);
//do query
try {GraphqlResponse response = client.doQuery(query);//this map is graphql resultMap data = response.getData();} catch (IOException e) {e.printStackTrace();
}
query is
query{findUsers(sex:"man",age:11){idnameagesexclass{namecodeschool{name}}}
}
do mutation
//crate client
GraphqlClient client = GraphqlClient.buildGraphqlClient("http://localhost:8081/graphql");
//create http headers
Map<String,String> headers = new HashMap<String,String>();
headers.put("token","123");
client.setHttpHeaders(headers);
//create mutaion
GraphqlMutation mutation = new DefaultGraphqlMutation("updateUser");
//create param
mutation.addParameter("id",1).addParameter("name","123").addParameter("age",18);
//add more complex attribute to see do query demo//result
mutation.addResultAttributes("code");
try {GraphqlResponse response = client.doMutation(mutation);//this map is graphql resultMap data = response.getData();
} catch (IOException e) {e.printStackTrace();
}
mutation is
mutation{updateUser(id:1,name:"123",age:18){code}
}
Complex structure request demo
Mutation demo,The query is consistent with the mutation.
    @Testpublic void testObjectParameter() throws IOException {String serverUrl = "http://localhost:8080/graphql";GraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(serverUrl);Map<String,String> httpHeaders = new HashMap<>();httpHeaders.put("token","graphqltesttoken");graphqlClient.setHttpHeaders(httpHeaders);GraphqlMutation mutation = new DefaultGraphqlMutation("addUser");List<User> users = new ArrayList<>();users.add(new User("tim",SexEnum.M));users.add(new User("sdf",SexEnum.F));mutation.getRequestParameter().addParameter("classId","123").addObjectParameter("users",users);mutation.addResultAttributes("code");System.out.println(mutation.toString());}/*** test user*/class User{public User(String name, SexEnum sexEnum) {this.name = name;this.sexEnum = sexEnum;}private String name;private SexEnum sexEnum;public String getName() {return name;}public void setName(String name) {this.name = name;}public SexEnum getSexEnum() {return sexEnum;}public void setSexEnum(SexEnum sexEnum) {this.sexEnum = sexEnum;}}/*** test user sex*/enum SexEnum{M,F}
mutation is
mutation{addUser(classId:"123",users:[{name:"tim",sexEnum:M},{name:"sdf",sexEnum:F}]){code}
}

以上就是官方全部案例,即使你去百度得到的也不过是这些。

从案例中可以看出,请求有两种,一种是简单请求query,一种是复杂请求mutation。

要记住GraphQL的核心就是查询请求,无外乎封装条件。

所以GraphQL的查询请求很简单:

@PostMapping("/find")
//    @RequestMapping(method = RequestMethod.POST, value = "/find")public Result find() {//1、graphql服务地址String serverUrl = "https://api2.vetspire.com/graphql";//2、build一个新的graphqlClientGraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(serverUrl);//3、使用Map来存储放入请求头,Authorization的密钥Map<String, String> httpHeaders = new HashMap<>();httpHeaders.put("Authorization", "SFMyNTY.g3QAAAACZAAEZGF0YW0AAAAIMTIxOjUxNDdkAAZzaWduZWRuBgA2HeSibwE.FSigojcmpREK5InTRp1iaxg_S2QQnz_Vd5_Z_PIlRQc");//4、graphqlClient  设置http请求的头graphqlClient.setHttpHeaders(httpHeaders);//下面开始发一个简单的query请求查询//创建一个query并设置query的名字为org,如果有特殊的需求自己继承GraphqlQueryString queryMethodName = "org";GraphqlQuery query = new DefaultGraphqlQuery(queryMethodName);// 如果需要增加一些必要的参数则使用query.addParameter("")://设置需要查询的参数是id和namequery.addResultAttributes("id", "name");//通过上面的信息进行查询GraphqlResponse response = null;try {response = graphqlClient.doQuery(query);} catch (IOException e) {e.printStackTrace();}//获取数据,数据为map类型Map result = response.getData();System.out.println(result);System.out.println(result.get("data"));return new Result(true, StatusCode.SUCCESS.getCode(),result);}

复杂一点的是更新的请求,需要组装条件模仿GraphQL的格式,还要封装相应的实体类:

@GetMapping("/updatePatient")
public Result updatePatient() throws IOException {//1、graphql服务地址String serverUrl = "https://api2.vetspire.com/graphql";//2、build一个新的graphqlClientGraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(serverUrl);//3、使用Map来存储放入请求头,Authorization的密钥Map<String, String> httpHeaders = new HashMap<>();httpHeaders.put("Authorization", "SFMyNTY.g3QAAAACZAAEZGF0YW0AAAAIMTIxOjUxNDdkAAZzaWduZWRuBgA2HeSibwE.FSigojcmpREK5InTRp1iaxg_S2QQnz_Vd5_Z_PIlRQc");//4、graphqlClient  设置http请求的头graphqlClient.setHttpHeaders(httpHeaders);GraphqlMutation mutation = new DefaultGraphqlMutation("updatePatient");//Patient patient = new Patient(24,"red");Patient input = new Patient(24,"blue");mutation.addParameter("id",847568).addObjectParameter("input",input);mutation.addResultAttributes("id","name","birthDate","color","species","clientId","updatedAt","insertedAt","breed");//addObjectParameter("patient",patient);ResultAttributtes dataAttr = new ResultAttributtes("latestWeight");mutation.addResultAttributes(dataAttr);GraphqlResponse mutationResponse = graphqlClient.doMutation(mutation);//同样返回的数据也是map的Map result = mutationResponse.getData();System.out.println(result);System.out.println(result.get("data"));return null;}class Patient{public Integer getBirthDay() {return birthDay;}public void setBirthDay(Integer birthDay) {this.birthDay = birthDay;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}private Integer birthDay;private String color;private String breed;private String sex;public String getBreed() {return breed;}public void setBreed(String breed) {this.breed = breed;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getSpecies() {return species;}public void setSpecies(String species) {this.species = species;}private String species;public Patient(Integer birthDay,String color){this.birthDay = birthDay;this.color = color;}}

对比官网示例,步骤就清晰明了了。

关键字:附近的小程序怎么开通_web前端开发好学吗_泉州seo网站排名_个人友情链接推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: