我正在使用此端点:
<add key="AWSRegion" value="us-east-1" />
当我没有变量时,它可以正常工作:
@PostMapping("graphql")
public ResponseEntity<Object> getResource(@RequestBody Object query) { // String query
ExecutionResult result;
if (query instanceof String) {
result = graphQL.execute(query.toString()); // if plain text
} else{
String queryString = ((HashMap) query).get("query").toString();
Object variables = ((HashMap) query).get("variables");
ExecutionInput input = ExecutionInput.newExecutionInput()
.query(queryString)
.variables((Map<String, Object>) variables) // "var1" -> "test1"
.build();
result = graphQL.execute(input);
}
return new ResponseEntity<Object>(result, HttpStatus.OK);
}
当我添加query {
getItem(dictionaryType: "test1") {
code
name
description
}
}
时,它开始失败,请参见此处:
variable
在我的query {
getItem(dictionaryType: $var1) {
code
name
description
}
}
中,我定义了schema
部分,如下所示:
query
在type Query {
getItem(dictionaryType: String): TestEntity
}
代码中:
java
答案 0 :(得分:1)
在操作中使用的任何变量都必须声明为操作定义的一部分,如下所示:
query OptionalButRecommendedQueryName ($var1: String) {
getItem(dictionaryType: $var1) {
code
name
description
}
}
这使GraphQL可以根据提供的类型验证变量,还可以验证变量是否在代替正确的输入。