graphql-java 整数作为输入

graphql-java integer as an input

我正在使用

compile group: 'com.graphql-java', 
name: 'graphql-java-tools', 
version: '5.2.4'

type Query {
sampleQuery(roll : Int!) : SampleResponse
}

当我尝试访问下面 java

中给出的内容时
{sampleQuery(roll : ?2){samples{roll,name}}}

它给出了 200 个成功响应而不是 400 个错误响应(因为我们试图在输入中传递无效值)。

此处,整数输入接受 ?2 or .2 or '2 or *2 or /2 等值...

为什么会接受? 我该怎么做才能验证此输入并抛出错误输入参数无效? 这是 graphQl 实现本身的问题吗?

在控制台日志中我得到了

line 2:72 token recognition error at: '?'

但我也得到了正确的回应。理想情况下,这不应 return 有效响应,因为输入本身无效。

主要问题是为什么 graphQL 不验证整数输入;而是解析输入(丢弃字符和数字)?它应该严格只接受整数值而不接受其他任何东西。

所以根据 graphql 语法,它允许(解析)附加一些字符(标记)(如 ?、~`/*...等)的整数值,但它不允许像 @、 &,$,!,{,],[| 等 因此,收到 200 成功响应,在这种情况下不会抛出错误。

参考: https://spec.graphql.org/draft/