从 GraphQL-Java 返回错误

Posted

技术标签:

【中文标题】从 GraphQL-Java 返回错误【英文标题】:Returning error from GrapQL-Java 【发布时间】:2017-04-15 07:43:54 【问题描述】:

我想验证用户在突变期间提供的输入,如果提供了一些无效字段,则提供错误。

有一个问题回答了 GraphQL-JS here 的问题

我想问这个关于使用 GraphQL-Java 实现的问题。

假设您有一个将数据发布到 API 服务器的表单。 API 服务器验证输入并返回 JSON 对象。如果输入无效,则返回如下错误对象。

errors: field1: "is required"

在使用 GraphQL 时,我们如何处理和处理此类错误?应该如何以及在哪里实现数据验证(应该是 GraphQL 的一部分还是应该在每个解析函数中)?

【问题讨论】:

【参考方案1】:

graphql-java 实现有一个类用于检查查询是否无效(即graphql.validation.Validatior)。这样,您可以在执行查询字符串之前验证它们。

如果查询无效,您可以创建一个将List<ValidationError> 作为参数的方法,以生成错误响应。

例子:

List<ValidationError> errors = validator.validateDocument(graphQLSchema, requestString);
if (!errors.isEmpty())  return executeError(errors); 

【讨论】:

只是一个注释。任何有效的 GraphQL 实现,包括 graphql-java,都会自行验证每个查询,并且无效查询永远不会触发执行。问题只是错误处理行为的可定制程度如何。

以上是关于从 GraphQL-Java 返回错误的主要内容,如果未能解决你的问题,请参考以下文章

graphql-java 错误数据(如扩展)被填充到客户端的“消息”字段中

我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphq

在 graphql-java 中注册自定义标量

Maven 和 graphql-java

Maven和graphql-java

无法使用 graphq-request 表示嵌套对象输入类型的数组