【问题标题】:GraphQL java: Throwing exceptions when request has unused variablesGraphQL java:当请求有未使用的变量时抛出异常
【发布时间】:2019-03-20 22:23:33
【问题描述】:

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

例如:

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

当用户在请求负载中将{foo: 42} 作为variables 发送时,我想抛出一个错误(比如IllegalArgumentException)。

编辑:关于如何在没有任何开箱即用机制的情况下实现这一点的答案/cmets 也是受欢迎的。

【问题讨论】:

    标签: java graphql graphql-java


    【解决方案1】:

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

    作为奖励,由于 graphql-java 引擎将为每个查询执行解析和验证查询,这个过程可能会有些耗时,为了避免解析和验证两次,您可以使用PreparsedDocumentProvider

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 2021-03-03
      • 2021-09-03
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多