7. 在探索者中测试突变
3m

🧑‍🔬 测试我们的突变

现在我们有了我们的方案,

让我们通过打开新的终端窗口来启动服务器。在这里,我们将导航到

https://127.0.0.1:4000
Screenshot of the GraphOS Studio Schema Reference tab, displaying the new mutation incrementTrackViews

https://127.0.0.1:4000
Screenshot of Explorer with an empty Operation panel, ready for us to start building our query

点击旁边的加号按钮()旁边的 incrementTrackViews 将其添加到我们的 操作面板中。这将预先填写一些信息!语法应该很熟悉,因为这与我们迄今为止查询的语法相同,尤其是在 升空 III 中,我们使用了

mutation IncrementTrackViews($incrementTrackViewsId: ID!) {
incrementTrackViews(id: $incrementTrackViewsId) {
}
}

✍️ 构建GraphQL突变

我们从 mutation 关键字开始,然后是 IncrementTrackViews是探索者为我们命名的)。在括号内,我们有一个由 $ 符号表示的 ,名为 incrementTrackViewsId,它是一种 ID 类型,且是必需的。

设置在下面的 变量 部分。目前它设置为 null,所以让我们将其更改为我们一直在使用的相同的轨道ID: c_0

https://127.0.0.1:4000
Screenshot showing the Variables panel in Explorer with a populated track ID
{
"incrementTrackViewsId": "c_0"
}
编写GraphQL突变时,应该从哪个关键字开始?
当编写GraphQL突变时,作为一种最佳实践,应该紧接在上一问题关键字后面的应该是什么?

回到 操作面板中!

在大括号内,我们列出了我们的入口点:incrementTrackViews。它接收一个id参数,我们将它设置为 incrementTrackViewsId,与刚才设置为c_0的相同。

现在在大括号的第二层内,我们可以开始添加我们的响应对象中可用的。这些字段在侧边栏中,这使得通过点击字段旁边的(加号)按钮来构建这个变得非常容易。

我们希望看到codesuccess布尔值,message,以及track对象本身。

track对象内部,我们想要idnumberOfViews。查看我们正在更新的视图次数,我们希望在突变成功后看到更新的新值。该id将由我们的缓存使用,我们将在稍后的前端实现中对其进行介绍。

https://127.0.0.1:4000
Screenshot showing the Operation panel in Explorer containing the completed mutation called IncrementTrackViews

这个操作应如下所示:

mutation IncrementTrackViews($incrementTrackViewsId: ID!) {
incrementTrackViews(id: $incrementTrackViewsId) {
code
success
message
track {
id
numberOfViews
}
}
}

让我们先运行它!

在右侧,您可以看到我们期望的是:code为200,success标志为truemessage表明成功,我们得到了更新后的track

https://127.0.0.1:4000
Screenshot of the Explorer showing a successful response to the IncrementTrackViews mutation

当我们重复执行该时,我们可以看到视图次数会上升!

在成功的突变响应中,codesuccessmessage的值是从哪里来的?

让我们看看当我们将incrementTrackViewsId改为我们的笨拙字符串"DOESNTEXIST"时会发生什么。

{
"incrementTrackViewsId": "DOESNTEXIST"
}

当我们运行这个时,我们看到响应的code是404,successfalse,并且消息message说"无法找到具有指定ID的track"。此外,track也被设置为null,没有可用的数据。

https://127.0.0.1:4000
Screenshot of the Explorer showing a 404 response to the IncrementTrackViews mutation
当mutation失败时,响应中的codemessage的值是从哪里来的?

我们的看起来很棒,并且正在按预期执行!现在是时候跳转到客户端了。

上一页

分享您对本课程的疑问和评论

您的反馈帮助我们改进!如果您遇到了问题或感到困惑,请告诉我们,我们将为您提供帮助。所有评论都是公开的,必须遵守 Apollo行为准则。请注意,已解决或处理过的评论可能会被删除。

您需要GitHub账户才能发表以下评论。还没有吗? 请在我们的Odyssey论坛上发帖。