我在用
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等.
它为什么要接受它?我能做些什么来验证这个输入和抛出错误,说无效的输入param?这是graphQl实现本身的问题吗?
在我得到的控制台日志中
line 2:72 token recognition error at: '?'但我也得到了正确的回应。理想情况下,这不应该返回有效的响应,因为输入本身是无效的。
主要问题是为什么graphQL不验证整数输入,而是解析输入(将字符与数字一起丢弃)?它应该严格地只接受整数值,而不接受其他任何内容。
发布于 2021-01-08 12:03:27
因此,根据graphql语法,它允许(解析)带有一些字符(例如?,~`/*.等)的整数值,但它不允许像@、&、$、!、{、]、[、]等标点符号。因此,接收到200个成功响应,在这种情况下不会抛出错误。
https://stackoverflow.com/questions/65574899
复制相似问题