GraphQL Java:当请求具有未使用的变量时引发异常

时间:2018-10-16 11:33:26

标签: java graphql graphql-java

假设我有一个带有变量映射和查询的请求有效负载。 graphql-java是否具有可用于检测有效负载中未使用的变量的现成机制?

例如:

type Query { hello : String! } # this just resolves to "hello world"

当用户在请求有效负载中以{foo: 42}的身份发送variables时,我想抛出一个错误(例如IllegalArgumentException)。

编辑:也欢迎解答/评论如何在没有任何现成机制的情况下实现此功能。

1 个答案:

答案 0 :(得分:0)

在执行查询之前,使用Parser将查询解析为查询的对象表示形式Document。可以通过查看查询中的OperationDefinition来访问查询中定义的变量。 -> VariableDefinition实例。然后将它们与请求有效负载中的变量进行比较。

作为奖励,graphql-java引擎将为每次查询执行解析并验证查询,并且此过程可能会很耗时,要避免两次解析和验证,可以使用PreparsedDocumentProvider