【发布时间】:2018-07-29 12:39:17
【问题描述】:
我正在使用 Apollo 客户端,但我不明白为什么调试我的错误如此困难: 我正在尝试对我的 GraphQL 的石墨烯 python 实现执行 mutate 调用。它以 400 错误代码结束,我无法检索信息。
例如:当我在 /graphQL 界面上尝试我的石墨烯服务时,它会向我返回有用的错误,例如错误的输入或错误的方法名称。 在这里,在阿波罗客户端上,它只会给我一个 400 代码错误。这对我一点帮助都没有。那么是否有可能从我的 apolo 客户端获得来自石墨烯的错误信息,而不是无用的 400 代码错误?
这是一个示例,来自我的石墨烯接口 (/graphQL):
mutation myMutation {
uploadFile(input:"") {
success
}
}
将输出:
{
"errors": [
{
"message": "Argument \"input\" has invalid value \"\".\nExpected \"UploadFileMutationInput\", found not an object.",
"locations": [
{
"column": 20,
"line": 2
}
]
}
]
}
当我在 apollo 客户端 (js) 上尝试相同的操作时:
client.mutate({
mutation: gql`
mutation($file: Upload!) {
uploadFile(input: $file) {
success
}
}
`,
variables: { file } })
.then(console.log)
.catch((e) => { console.log("catch", e) })
我明白了
Error: Network error: Response not successful: Received status code 400
我的 catch 从来没有被调用过,文档对我一点帮助也没有。
我想要的是获取我的调用的突变细节错误:当我使用不正确的方法调用或错误的输入类型时,我不应该在没有任何关于是什么导致我的请求错误的信息的情况下陷入 400。
【问题讨论】:
-
这应该在您的突变选项中使用
options: () => ({ errorPolicy: 'all' }),完成,但我仍然不成功......我不明白为什么没有用一个明确的例子记录它。