graphql java_GraphQL从入门到放弃

简介

千言万语汇成一句话:我的未来式由我做主。

GraphQL是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。(完美的一段Copy)

为什么要用它?

前端自己定义返回的数据及结构,降低前后端沟通成本

无需编写接口文档(GraphQL会根据schema自动生成API文档)

schema拼接,可以组合和连接多个GraphQL API,合并为一个,减少请求次数

运用

基于SpringBoot的运用

依赖

com.graphql-java

graphql-spring-boot-starter

4.0.0

com.graphql-java

graphql-java-tools

4.3.0

com.graphql-java

graphiql-spring-boot-starter

4.0.0

定义

服务入口定义

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

}

实现入口

实体类

f705875e9ac6

image

Query相关Java类实现

实现 GraphQLQueryResolver 接口

添加 @Component 注解

方法名、参数类型、返回值与root.graphqls内的定义一致

f705875e9ac6

image

Mutation相关Java类实现

实现 GraphQLMutationResolver 接口

添加 @Component 注解

方法名、参数类型、返回值与root.graphqls内的定义一致

f705875e9ac6

image

接口调试

graphql默认请求路径: /graphql

可视化调试界面:/graphiql

使用GraphiQL调试

界面是长这个样子的

f705875e9ac6

image

Query

查询单条数据

f705875e9ac6

image

查询所有数据

f705875e9ac6

image

组合查询

相同名称的接口组合为一个接口调用,需要取一个别名用于区分它们

定义别名 类似这样的格式

别名: 接口

f705875e9ac6

image

Mutation

添加

f705875e9ac6

image

修改

f705875e9ac6

image

删除

f705875e9ac6

image

Console

f705875e9ac6

image

使用Postman调试

Query

查询单条数据

f705875e9ac6

image

查询所有数据

f705875e9ac6

image

组合查询

f705875e9ac6

image

Mutation

添加

f705875e9ac6

image

修改

f705875e9ac6

image

删除

f705875e9ac6

image

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值