「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」
介绍
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。1
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。2
服务端提供定义好的 schema (数据类型,代表能够提供什么格式的数据),客户端则通过查询语句来主动决定想要的数据格式,数据格式的主动权掌握在了前端,类似数据库中的表和 SQL 的关系,可以查询单表的某个或多个字段,或者多表的联合字段
- GraphQL 能使得前端在开发过程中不在强依赖后端服务的接口和数据格式,前后端的开发是解耦的,能够极大地减少前后端开发人员的沟通成本
- GraphQL 会根据 schema 自动生成 API 文档
实践
本示例基于 Spring Boot 2.2.6 与 Graphql Java 16.1
Spring Boot 2.2 以下版本搭配 GraphQL Java Tools 5.4.x 以上的版本时需要指定 kotlin 的版本
WARNING: NoClassDefFoundError when using GraphQL Java Tools > 5.4.x
引入依赖
<!-- com.graphql-java-kickstart 为最新的 groupId, com.graphql-java 已经停止更新 -->
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>11.0.0</version>
</dependency>
<!-- 可视化调试工具 altair -->
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>altair-spring-boot-starter</artifactId>
<version>11.0.0</version>
<scope>runtime</scope>
</dependency>
复制代码
从 maven 仓库可以对比看到 com.graphql-java
的更新时间还是 2018 年
创建 schema 文件
根据不同的业务对象创建不同的 graphqls 文件,并将 Query 和 Mutation 相关 schema 置于 root.graphqls 文件中

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐