GraphQL
GraphQL 是一种 API 查询语言和运行时,用于使用现有数据完成这些查询。它为您的 API 中的数据提供了完整且易于理解的描述,让客户能够准确地询问他们需要什么,更容易随着时间的推移发展 API,并启用强大的开发人员工具。
GraphQL 操作指令
GraphQL 作为一个高效的开发手段,它提供了一些自带的指令,让我们能去更高效地对数据进行增删改查,比如:
- query:查询
- mutation:修改
query
使用 GraphQL 的 query 指令,可以进行查询数据,并且可以只查我们所需要的数据,降低了查询的数量,大大提升了查询的速率,非常强大。
比如我们现在需要做一个图书管理系统,我想要查询一个图书列表,那么我的 query 语句会这么写:
query getBooks {
books {
id,name,page
}
}
上面语句的意思就是:
- query:执行的操作名,也就是查询
- getBooks:执行的函数名
- books:后端定义的接口
- id,name,page:所需要查询的字段
这个查询语句最终会返回什么样的数据呢,如下面,可以看到只会返回我们所需要的数据,并不会返回额外的字段,这大大提升了查询的速率:
{
"data": {
"books": [
{
"id": "123",
"name": "javascript",
"page": 500
},
{
"id": "125",
"name": "vuejs",
"page": 600
}
]
}
}
上面说了,getBooks 是一个函数名,那既然是函数,就可以传递参数,我们需要使用到 GraphQL 的 variables 这个字段,去进行查询。
比如我现在想要查询一个 id 为 123 的书本,我可以这么去写 query:
query getBook($id: ID!){
book(id: $id) {
id,name,page
}
}
我们看到,我们需要传递 ID 这个参数,才能查到对应的书本,所以我们需要传 variables。
{
"id": "123"
}
这样才能返回对应的那个书本。
{
"data": {
"id": "123",
"name": "javascript",
"page": 500
}
}
mutation
mutation 指令是用来修改数据的,比如我现在想要修改 id 为 123 的书本,将 page 从 500 修改到 550:
mutation editBook($id: id!,$page: page!) {
editBook(id: $id,page: $page) {
id,name,page
}
}
variables 填写:
{
"id": "123",
"page": 550
}
修改完会返回修改数据:
{
"data": {
"id": "123",
"name": "javascript",
"page": 550
}
}
Apifox 调试 GraphQL mutation
我们可以使用 Apifox 来进行 GraphQL 的 mutation 指令操作。
查询列表
首先我们使用 Apifox 查询一下现有的 books 列表,我们需要填好 query 参数和 variables 参数,我们看到返回的数据 page 是 500:
我们把这个请求保存为 接口用例。
使用 mutation
然后我们新建一个 mutation 的接口用例,用来修改 page。
然后保存为 接口用例。
验证结果
这个时候我们重新查询一次数据,看数据是否被更新了,我们重新回到 query 这个接口用例,重新运行一次,看到 page 已经改成 550。
关于Apifox
Apifox 是一体化 API 协作平台,可以实现 API 文档、API 调试、API Mock、 API 自动化测试,是更先进的 API 设计/开发/测试工具。Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。 简化了你的 API 工作流,并确保了前端、后端和测试人员之间的高效协作。
欢迎体验一下,完全免费的哦:在线使用 Apifox