我在使用 Graphql 和 Apollo Client 时遇到了问题。
我总是在使用 REST 时创建不同的响应,如 401 代码,但在这里我不知道如何做类似的行为。
当我得到响应时,我希望它转到 catch 函数。我的前端代码示例:
client.query({
query: gql`
query TodoApp {
todos {
id
text
completed
}
}
`,
})
.then(data => console.log(data))
.catch(error => console.error(error));
有谁能够帮我?
原文由 saeta 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 GraphQL 中(至少在 graphql-js 中)返回错误的方法是在 resolve 函数中抛出错误。由于 HTTP 状态代码特定于 HTTP 传输,而 GraphQL 不关心传输,因此您无法在那里设置状态代码。你可以做的是在你的 resolve 函数中抛出一个特定的错误:
GraphQL 错误在响应中发送到客户端,如下所示:
如果消息的信息不够,您可以为您的 GraphQL 服务器创建一个特殊的错误类,其中包含一个状态代码。为确保状态代码包含在您的响应中,您必须在创建中间件时指定
formatError
函数: