graphql java integer作为输入

zi8p0yeb  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(303)

我正在使用

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: '?'

但我也得到了正确的回答。理想情况下,这不应返回有效响应,因为输入本身无效。
主要的问题是为什么graphql不验证整数输入;而是解析输入(丢弃字符和数字)?它应该严格地只接受整数值而不接受其他值。

ej83mcc0

ej83mcc01#

因此,根据graphql语法,它允许(解析)加上一些字符(标记)(如?、~ `/*…等)的整数值,但不允许使用@、&、$、!、{、]、[、|,因此,在这种情况下,接收到200个成功响应并且不抛出错误。
reference:httpshttp://spec.graphql.org/draft/

相关问题