如何定义 GraphQL 查询和突变?
GraphQL 是 Facebook 开发的一种数据查询和操作语言。使用 GraphQL,您可以精确地获得所需的数据,不多也不少。此外,您只需使用一个入口点(即 /graphql)即可获取数据。
GraphQL架构
GraphQL 模式是 GraphQl 应用程序接口的蓝图。它描述了我们可以从 API 中查询哪些数据,以及 API 将如何返回数据。
您定义的模式描述了您在应用程序中可能需要查询的所有数据。模式还指定了应用程序可以用来读取或更新服务器上数据的查询和突变。
设计GraphQL查询
让我们一起来看看如何在 GraphQL 模式中定义查询。
对象类型
一切从对象类型开始。首先,我们要定义要查询的对象类型并添加相关字段。假设我们要创建一个获取电影的 API。让我们定义一个如下所示的 “movie “对象类型:
type Movie {
id: Int!
title: String!
description: String
}
在这里,Movie 是一个对象类型,其字段包括 id、标题和描述。感叹号(!)因此,该类型中 id 和 title 是必填字段,而 description 是可选字段。
查询类型
它是一种特殊的对象类型,为查询提供入口点。所有查询都在该对象中定义。
type Query{
# Define queries here
}
获取 API 中的所有电影,我们将定义一个 movie 查询:
type Query {
movies: [Movie!]!
}
如您所见,我们还将查询返回的数据指定为 [Movie!]!。这种语法意味着它将始终返回一个数组,而数组中的每个元素都是一个 movie 对象。
现在,如果我们想获取一部特定的电影怎么办?我们可以这样定义 movie 查询:
type Query {
movies: [Movie!]!
movie(id: Int!): Movie
}
movie 查询需要一个 id 参数,即我们要获取的 movie id。然后返回一个 movie 对象。
用法
现在,我们可以这样使用这些查询:
# Fetches all the movies
query movies {
id
title
description
}
# Fetches a particular movie
query movie(id: 200) {
id
title
description
}
定义 GraphQL 突变
与查询一样,您可以在突变类型中定义突变
突变类型
比方说,我们希望允许一个突变来创建一部新 movie。我们可以这样定义 create Movie 突变:
type Mutation {
createMovie(title: String!, description: String): Movie
}
它将接受标题和描述并创建一部新 movie。最后,它会在响应中返回一个新添加 movie 的 Movie 对象。
用法
我们可以这样使用突变:
query createMovie(title: "The Matrix", description: "A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers.") {
id
title
description
}
如果我们运行这个突变,API 将返回这样的数据:
{
"data": {
"createMovie": {
"id": 200,
"title": "The Matrix",
"description": "A computer hacker learns from mysterious rebels about the true nature ofhis reality and his role in the war against its controllers."
}
}
}
就是这样。您可以看到,在模式中定义查询和突变是多么容易。现在,您只需创建解析器函数来处理它们,您的 API 就可以正常运行了。
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- API文档:深入指南与前沿免费工具 – Apidog
- 交叉熵的Numpy实现:从理论到实践
- Google DeepMind发布 Genie 3与Shopify:2小时上线电商3D样板间实战
- Gemini Deep Research 技术实战:利用 Gemini Advanced API 构建自动化的深度研究 Agent
- FLUX.1 Kontext API 使用完全指南:解锁文本驱动的智能图像编辑
- 如何防范User-Agent信息伪装引发的API访问风险
- 苹果支付流程:从零开始的接入指南
- 全面掌握 OpenAPI 规范:定义、生成与集成指南
- 深入解析granularity是什么?颗粒度中文详解
- 开发者如何利用缓存技术提升API性能
- Orbitz API 全攻略:旅行社高效整合酒店、航班与租车服务的必读指南
- REST API命名规范的终极指南:清晰度和一致性的最佳实践