Postman请求方式
Post请求 JSON格式 传递
{
"query":"{selectUserById(id:1){id name ecount lout}}"
}
根据id进行查询
组合查询
Post请求: http://localhost:9009/graphql
Body raw JSON格式
新增方法
Post请求: http://localhost:9009/graphql
Body raw JSON格式
{
"query":"mutation($user: UserInput!){insert(user:$user){respCode msg}}",
"variables":{
"user":{
"name":"2132132131",
"ecount":"12321421321",
"lout":"213214213213"
}
}
}
修改方法
Post请求: http://localhost:9009/graphql
Body raw JSON格式
{
"query":"mutation($user: UserInput!){update(user:$user){respCode msg}}",
"variables":{
"user":{
"id":12,
"name":"王六",
"ecount":"王六",
"lout":"王六"
}
}
}
删除方法
Post请求: http://localhost:9009/graphql
Body raw JSON格式
{
"query":"mutation($id: Int!){delete(id:$id){respCode msg}}",
"variables":{
"id":9
}
}
第二种Controller Rest 方法 调用GraphQL方法
创建一个config文件 在config文件中创建一个GraphQLProvider配置文件如下图所示:
重点是如下的配置项:
根据graphql中定义的方法来执行java代码
MyDataFecher是一个接口.要进行查询继承这个接口实现里面的方法比如:
Root.graphqls下有一个selectUserById方法。创建一个类UserGetById的类如下:
FiledName对应的返回的selectUserById对应.graphqls里面的方法名。DataFetcher方法执行里面的业务并返回出来的对象值。一个类对应.graphqls里面的一个方法。
private RuntimeWiring buildWiring() {
RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring()
.type("Query", builder -> {
//遍历myDataFetcher的所有实现类
for (MyDataFetcher myDataFetcher : myDataFetchers) {
//获取查询的名称 然后找到其对应的类型
builder.dataFetcher(myDataFetcher.fieldName(),
//调用不同的myDataFetcher实现类的dataFetcher方法 返回查询到的数据
environment -> myDataFetcher.dataFetcher(environment));
}
return builder;
}
)
.build();
// RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring()
// .type("Query", builder ->
// builder.dataFetcher("selectUserById", environment -> {
// User user = userService.selectUserById(environment.getArgument("id"));
// return user;
// })
// )
// .build();
return wiring;
}
Controller层调用
ExecutionInput executionInput = ExecutionInput.newExecutionInput();//构造器
executionInput.query(request.getQuery()); //接收传递过来的查询语句
result.setData(graphQL.execute(executionInput).toSpecification());返回业务中处理过来的数据并接收。
重点:一个接口可解决所有的查询业务场景,根据前端以及PostMan调用controller接口向属性值传递值进行查询比如:组合查询
根据ID进行查询