我正在使用
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不验证整数输入;而是解析输入(丢弃字符和数字)?它应该严格地只接受整数值而不接受其他值。
1条答案
按热度按时间ej83mcc01#
因此,根据graphql语法,它允许(解析)加上一些字符(标记)(如?、~ `/*…等)的整数值,但不允许使用@、&、$、!、{、]、[、|,因此,在这种情况下,接收到200个成功响应并且不抛出错误。
reference:httpshttp://spec.graphql.org/draft/