GraphQL介绍与Spring Boot GraphQL实现 -- 知识铺
1.Graphql介绍 重试 错误原因
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
优势
-
GraphQL 速度快,并且比较稳定,GraphQL 的操作是在数据层面的,所以比较快。
-
GraphQL 可以获取更多的资源,当查询一个数据的时候,不止是这个数据,甚至可以很快地查询到数据引用的另一个数据。GraphQL 可以在单个请求中去获取尽量多的数据,并且在弱网状态下,GraphQL 依旧表现出色。
-
GraphQL 是单端点查询,并在此端点中去完成所有的查询。
-
GraphQL 的可持续性非常出色,无论是新字段、还是旧字段,它都能很好地去处理,可维护性也极佳。
-
GraphQL 具有向下兼容的特性,就算是很久很久以前的功能,GraphQL 还是能很好地去兼容它,保证旧版本的正常运行,同时又不影响新功能的加入以及整体的稳定性。这样做的好处就是,不需要去担忧版本号问题了。
-
GraphQL 具有强类型,在 GraphQL 的查询中,一个级别对应一个强类型,这个类型充当一个字段的描述。这样的好处就是,在查询之前,可以校验出错误并提示,方便定位问题,提高性能。
-
自省:可以查询 GraphQL 服务器支持的类型。这为工具和客户端软件创建了一个强大的平台,可以在这些信息的基础上构建静态类型语言的代码生成、我们的应用程序框架、Relay 或 GraphiQL 等 IDE。
-
GraphQL 支持使用者去决定服务器支持的类型。这样的好处就是,给很多使用 GraphQL 的 工具或者端建立了一个比较成熟且强大的应用平台,通过这个平台,一些框架、工具得到不断地优化提升。
劣势
-
GraphQL 无法完成深度查询,所以无法对于未知深度的数据进行一次性查询。
-
GraphQL 具有非常死板的响应结构,你必须遵从这个结构去查询数据,或者自己添加一个转换器来转换。
-
GraphQL 无法进行网络级别的缓存,你必须使用另外别的办法进行持久查询。
-
GraphQL 默认没有上传文件的功能,GraphQL 也不接收文件类型的参数,但是你可以使用 REST 的方式进行上传文件,达到上传文件的目的。
-
GraphQL 的执行是不可预测的,因为 GraphQL 太过于灵活了。
-
同样的一个简单的 API,GraphQL 会表现得很复杂,所以建议简单 API 使用 RSET。
2.mysql环境搭建
参考代码仓库里面的mysql模块,这里只贴出docker-compose.yml
<span>version: <span>'3'</span></span>
运行
<span><span>docker-compose</span> <span>-f</span> <span>docker-compose</span><span>.yml</span> <span>-p</span> <span>mysql5</span><span>.7</span> <span>up</span> <span>-d</span></span>
初始化脚本
<span><span>CREATE</span> <span>DATABASE</span> <span>IF</span> <span>NOT</span> <span>EXISTS</span> <span>`BOOK_API_DATA`</span>;</span>
3.代码工程
实验目标
实现一个基于graphql查询的例子
实现过程
1. 定义Schema,Schema使用GraphQL Schema Definition Language (SDL)来定义 重试 错误原因
2. 实现Resolver,Resolver函数负责从数据源中获取请求的数据
3. 配置和启动GraphQL服务器 ,要启动GraphQL服务器,你需要安装相应的依赖和配置服务器
pomxml 重试 错误原因
<span><span><?xml version="1.0" encoding="UTF-8"?></span></span>
GraphQLQueryResolver 重试 错误原因
<span><span>package</span> com.et.graphql.queryresolvers;</span>
<span><span>package</span> com.et.graphql.queryresolvers;</span>
<span><span>package</span> com.et.graphql.queryresolvers;</span>
graphqls(/resources/graphql) 重试 错误原因
<span><span>type</span> <span>Book {</span></span>
model 重试 错误原因
<span><span>package</span> com.et.graphql.model;</span>
<span><span>package</span> com.et.graphql.model;</span>
repository 重试 错误原因
<span><span>package</span> com.et.graphql.repository;</span>
<span><span>package</span> com.et.graphql.repository;</span>
DemoApplication.java 重试 错误原因
<span><span>package</span> com.et.graphql;</span>
application.yaml 重试 错误原因
<span>spring.jpa.hibernate.ddl-auto=none</span>
以上只是一些关键代码,所有代码请参见下面代码仓库
代码仓库
4.测试
启动spring boot应用 打开postman,调用
http://127.0.0.1:8088/graphql 输入 重试 错误原因
<span>query {</span>
返回结果
5.引用
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240424/GraphQL%E4%BB%8B%E7%BB%8D%E4%B8%8ESpring-Boot-GraphQL%E5%AE%9E%E7%8E%B0--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com