于10月8日至10日在纽约市与我们相聚,了解有关 GraphQL Federation 和 API 平台工程的最新技巧、趋势和新闻。参加2024年Graphql峰会,地点在纽约市
文档
免费开始

Apollo Kotlin 中的更新


更新 ,它用于修改后端数据。按照 GraphQL 的约定,查询是读取操作,而是写入操作。

定义一个更新

在您的应用中定义一个 ,就像定义 一样,只需使用 mutation关键字。以下是一个用于投票帖子的mutation示例:

UpvotePost.graphql
mutation UpvotePost($postId: Int!) {
upvotePost(postId: $postId) {
id
votes
}
}

以下是一个支持此mutation的示例模式片段:

schema.graphqls
type Mutation {
upvotePost(postId: Int!): Post
}
type Post {
id: Int!
votes: Int!
content: String!
}

通常,Mutation类型(如上upvotePost所示)描述mutations可以执行的操作。这些字段通常接受一个或多个,并指定要创建或修改的数据。

mutations 返回类型

通常,Mutation字段的包括已修改的后端数据。这为请求的客户端提供了有关mutation结果的立即信息。

在上述示例中,upvotePost返回刚被点赞的Post对象。以下是一个示例响应:

{
"data": {
"upvotePost": {
"id": "123",
"votes": 5
}
}
}

有关 mutation 返回类型更多信息,请参阅 设计mutations.

生成mutation类

类似于查询, mutations 通过生成的类的实例表示,遵循 Mutation 接口。构造函数 arguments 用于定义 mutation 。您可以通过 ApolloClient.mutation(mutation) 将 mutation 对象传递给服务器,执行它并接收已类型化的结果:

val upvotePostMutation = UpvotePostMutation(postId = 3)
val response = apolloClient.mutation(upvotePostMutation).execute()

使用mutation结果中的片段

在许多情况下,您会希望使用 mutation 结果来更新 UI。 片段是一种在查询和 mutations 之间共享结果处理的很好方式:

mutation UpvotePost($postId: Int!) {
upvotePost(postId: $postId) {
...PostDetails
}
}

传递输入对象

GraphQL 类型系统作为传递复杂值到字段的 方式输入对象。输入对象通常用于变异变量,因为它们提供了一种紧凑的方式传递要创建的对象:

mutation CreateReviewForEpisode($episode: Episode!, $review: ReviewInput!) {
createReview(episode: $episode, review: $review) {
stars
commentary
}
}
val reviewInput = ReviewInput(stars = 5, commentary = "This is a great movie!")
val response = apolloClient.mutation(CreateReviewForEpisodeMutation(episode = Episode.NEWHOPE, review = reviewInput)).execute()
上一页
查询
下一页
订阅
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,均属 Apollo GraphQL。

隐私政策

公司