[英]graphql errors and status messages in graphql-js
我在概念上迷上了graphsql(使用graphql-js)。
假设API用户发送了一个查询,而数据库服务器已关闭,我想将此信息作为错误返回,
data { errors }
名单。
我该如何访问数据中的错误对象并在其中推送我自己的错误消息(例如,有关数据库服务器中断的消息)?
接下来我想知道的是如何向数据对象添加附加消息对象。
假设用户已按ID请求数据库项(例如,特定帐户),但该项不存在。 现在,我想返回如下内容:
{
data: {
messages: [{status: "failure", message: "This account does not exist"}]
}
}
我该怎么做,是否还必须将消息定义为类型?
将errors
和messages
作为查询结果的一部分的一种方法是将它们作为GraphQL对象类型的字段包括在内。
例如,您有一个GraphQL对象类型Item
其中包含字段id,名称,错误和消息。 当数据库服务器关闭时,仅填充项目实例的errors
字段。 当具有给定ID的项目不可用时,将填充messages
字段。 该项目可用时,将设置名称字段。
使errors
和messages
字段显示在GraphQL响应的data
属性内的唯一方法是将它们包括在GraphQL模式的类型系统中,并向客户端明确要求它们。 但是,如果您希望在每次请求时都返回一个自定义errors
和messages
字段,而无论客户端是否要求它们,都可以将它们包括在data
属性之外。
例如,如果您使用express-graphql
,则它提供了扩展选项,该选项使您可以将任何多余的信息附加到每个响应有效负载上( https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index。 js#L95 )
如果您未使用express-graphql
,则可以将其视为如何在每个响应中包括自己的元数据的示例。 express-graphql
是一个非常简单的包装器,您始终可以将自己的数据写入响应中。 例如,这是express-graphql
附加errors
( https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L309 )。 您可以执行相同操作,但使用不同的密钥。
祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.