SpringBoot整合GraphQL第(二)章节

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进行查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值