热门标签 | 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进行查询


推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
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社区 版权所有