9. 错误!当查询出现偏差
2m
您目前正在使用本课程的旧版本。 查看课程变更日志.

我们 Catstronauts 应用开发进展顺利。但我们知道,在现实世界中,事情并不总是按这种方式发展。

事情出错的方式有很多。在我们的之行中,当服务器正在将查询 AST 与模式进行验证时,它可能会遇到无效的或格式错误的选取。因此,查询之旅就此中断,并返回客户端土地,带有错误。

Hand-drawn illustration depicting a GraphQL server returning an error to client-land because of malformed queries

让我们看一个例子,我们尝试用于numberOfViews ,因为我们要将它添加到主页上的 tracks 卡片上。我们知道它存在于我们的中,因为我们甚至看到了/tracks端点返回了它!

这是真的,但是numberOfViews 不是我们的一部分。如果我们尝试将其添加到中,探索者会用一个有用的红色波浪线告诉我们查询中有问题。

https://127.0.0.1:4000
Screenshot of Apollo Studio Explorer showing an invalid field, `numberOfViews`, underlined by a red squiggly line

我们仍然可以尝试运行,并且它将开始它的旅程。但是,这段旅程将在服务器验证步骤被截断,此时服务器将发送其响应。

在响应中,我们将看到一个新键:errors.

https://127.0.0.1:4000
Screenshot of Apollo Studio Explorer showing the error we get in response to submitting a query with an invalid field
代码挑战!

在Apollo沙盒的探索器中,将tracksForHome中选中的所有字段都替换为“numberOfViews”。复制并粘贴整个响应在此以下。

errors是一个数组,包含在服务器尝试执行过程中出现的每个错误。是的,可能会有多个错误!ApolloServer提供了错误代码,这将有助于缩小导致问题的原因。

在我们的情况下,我们只有一个带有代码GRAPHQL_VALIDATION_FAILED的错误,它甚至告诉我们哪个在我们的模式中无效。

在一个服务器响应中,你可以期望在JSON对象中找到哪些键?

为了修复错误,我们知道我们需要修复我们的,或者要求我们的后端团队对模式进行迭代,也许还需要添加新的

在其他错误被适当处理时,尤其是当错误与无效的用户输入有关时,它们在前端尤其有用,可以告知用户问题的性质。

最后,请注意,有时当返回错误时,它仍然可以返回一些请求的数据。我们将在未来的课程中介绍如何处理像这样的部分结果。

当你查询模式中不存在的字段时,服务器会发送什么错误代码?
上一页

分享你对这个课程的疑问和评论

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

在下方发表需要 GitHub 账户。还没有吗? 请改在我们的大 Odyssey 论坛上发帖。