从 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