原文地址:https://xeblog.cn/articles/6
简介
千言万语汇成一句话:我的未来式由我做主。
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。(完美的一段 Copy)
为什么要用它?
- 前端自己定义返回的数据及结构,降低前后端沟通成本
- 无需编写接口文档(GraphQL 会根据 schema 自动生成 API 文档)
- schema 拼接,可以组合和连接多个 GraphQL API,合并为一个,减少请求次数
运用
基于 SpringBoot 的运用
依赖
<dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java-tools</artifactId> <version>4.3.0</version> </dependency> <!-- 可视化调试工具 --> <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphiql-spring-boot-starter</artifactId> <version>4.0.0</version> </dependency>
定义
服务入口定义
resources 目录下创建一个名为 root.graphqls 的文件
# 查询相关接口 type Query { # 通过id获取用户信息 getUserById(id: Int!): User # 用户信息列表 listUser: [User] } # 变更相关接口 type Mutation { # 添加用户信息 saveUser(user: addUserInput!): Boolean # 删除用户信息 deleteUser(id: Int!): Boolean # 更新用户信息 updateUser(user: updateUserInput!): Boolean }
Query 定义的是查询相关的入口
Mutation 定义的是增删改相关的入口
剖析
geUserById: 与java类中的方法名一致 id: 方法参数,Int(I大写) 表示是一个int类型,"!"表示非空 User: 返回值类型,这里返回的是一个java对象 [type]: 表示是一个列表
scheme 定义
resources 目录下创建一个{beanName}.graphqls 的文件
这个文件是 query/mutation 具体的 scheme 定义字段、类型
示例:user.graphqls
# 用户信息对象 type User { # 编号 id: Int! # 用户名 username: String! # 密码 password: String! # 年龄 age: Int } # 添加用户信息输入参数 input addUserInput { id: Int! username: String! password: String! age: Int } # 更新用户信息输入参数 input updateUserInput { id: Int! username: String! password: String! age: Int }
实现入口
实体类
Query 相关 Java 类实现
- 实现 GraphQLQueryResolver 接口
- 添加 @Component 注解
- 方法名、参数类型、返回值与 root.graphqls 内的定义一致
Mutation 相关 Java 类实现
- 实现 GraphQLMutationResolver 接口
- 添加 @Component 注解
- 方法名、参数类型、返回值与 root.graphqls 内的定义一致
接口调试
graphql 默认请求路径: /graphql
可视化调试界面:/graphiql
使用 GraphiQL 调试
访问地址:http://localhost:8080/graphiql
界面是长这个样子的
Query
查询单条数据
查询所有数据
组合查询
相同名称的接口组合为一个接口调用,需要取一个别名用于区分它们
定义别名 类似这样的格式
别名: 接口
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于