我们 Catstronauts 应用开发进展顺利。但我们知道,在现实世界中,事情并不总是按这种方式发展。
事情出错的方式有很多。在我们的查询之行中,当服务器正在将查询 AST 与模式进行验证时,它可能会遇到无效的字段或格式错误的选取。因此,查询之旅就此中断,并返回客户端土地,带有错误。
让我们看一个例子,我们尝试查询用于numberOfViews
字段,因为我们要将它添加到主页上的 tracks 卡片上。我们知道它存在于我们的数据源中,因为我们甚至看到了/tracks
端点返回了它!
这是真的,但是numberOfViews
字段不是我们GraphQL 模式的一部分。如果我们尝试将其添加到查询中,探索者会用一个有用的红色波浪线告诉我们查询中有问题。
我们仍然可以尝试运行查询,并且它将开始它的旅程。但是,这段旅程将在服务器验证步骤被截断,此时服务器将发送其响应。
在响应中,我们将看到一个新键:errors
.
在Apollo沙盒的探索器中,将tracksForHome
中选中的所有字段都替换为“numberOfViews”。复制并粘贴整个响应在此以下。
errors
是一个数组,包含在服务器尝试执行查询过程中出现的每个错误。是的,可能会有多个错误!ApolloServer
提供了错误代码,这将有助于缩小导致问题的原因。
在我们的情况下,我们只有一个带有代码GRAPHQL_VALIDATION_FAILED
的错误,它甚至告诉我们哪个字段在我们的模式中无效。
为了修复错误,我们知道我们需要修复我们的查询,或者要求我们的后端团队对模式进行迭代,也许还需要添加新的字段。
在其他错误被适当处理时,尤其是当错误与无效的用户输入有关时,它们在前端尤其有用,可以告知用户问题的性质。
最后,请注意,有时当查询返回错误时,它仍然可以返回一些请求的数据。我们将在未来的课程中介绍如何处理像这样的部分结果。
分享你对这个课程的疑问和评论
您的反馈帮助我们改进!如果您遇到困难或困惑,请告诉我们,我们将尽力帮助您。所有评论都是公开的,并且必须遵守 Apollo 行为准则。注意,已解决或处理过的评论可能会被删除。
在下方发表需要 GitHub 账户。还没有吗? 请改在我们的大 Odyssey 论坛上发帖。