GraphQL java:当请求有未使用的变量时抛出异常
Posted
技术标签:
【中文标题】GraphQL java:当请求有未使用的变量时抛出异常【英文标题】:GraphQL java: Throwing exceptions when request has unused variables 【发布时间】:2019-03-20 22:23:33 【问题描述】:假设我有一个带有变量映射和查询的请求负载。 graphql-java
是否有任何开箱即用的机制可用于检测有效负载中未使用的变量?
例如:
type Query hello : String! # this just resolves to "hello world"
当用户在请求负载中将foo: 42
作为variables
发送时,我想抛出一个错误(比如IllegalArgumentException
)。
编辑:关于如何在没有任何开箱即用机制的情况下实现这一点的答案/cmets 也是受欢迎的。
【问题讨论】:
【参考方案1】:在执行查询之前,使用Parser
将查询解析为Document
,这是查询的对象表示。查询中定义的变量可以通过查看其OperationDefinition
来访问 --> VariableDefinition
实例。然后将它们与请求负载中的变量进行比较。
作为奖励,由于 graphql-java 引擎将为每个查询执行解析和验证查询,这个过程可能会有些耗时,为了避免解析和验证两次,您可以使用PreparsedDocumentProvider
【讨论】:
以上是关于GraphQL java:当请求有未使用的变量时抛出异常的主要内容,如果未能解决你的问题,请参考以下文章
处理带有变量的 Graphql 查询时,Python 请求抛出 400