热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot整合GraphQL第(二)章节

Postman请求方式Post请求JSON格式传递{query:{selectUserById(id:1){idnameecountlout}}}根据id进行查询组

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


推荐阅读
author-avatar
mobiledu2502854077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有