我有一个端点,请求在该端点上有效:
query {
getItem(dictionaryType: "test1") {
code
name
description
}
}
工作正常,请参阅:
我想测试变量-所以我想将其更改为:
query {
getItem($dictionaryType: String) {
code
name
description
}
}
variables {
dictionaryType: "test1"
}
我不想使用邮递员以外的任何其他工具,或者我不想使用文本以外的其他格式。 执行第二个输出时,出现以下错误:
"errors": [
{
"message": "Invalid Syntax",
"locations": [
{
"line": 2,
"column": 9,
"sourceName": null
}
],
如何修复请求的语法?
编辑:
我对语法这样的请求甚至有疑问:https://stackoverflow.com/a/50043390/4983983
query { getDataTypes }
将其转换为json例如:
{"query": "{getDataTypes}"}
不起作用,并给出JSON分析错误:
Cannot deserialize instance of
java.lang.String out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of
java.lang.String out of START_OBJECT token\n at [Source: (PushbackInputStream
错误。
当前code
个端点的Posts
如下:
@PostMapping("graphql")
public ResponseEntity<Object> getResource(@RequestBody String query) {
ExecutionResult result = graphQL.execute(query);
return new ResponseEntity<Object>(result, HttpStatus.OK);
}
如果我将其更改为:
@PostMapping("graphql")
public ResponseEntity<Object> getResource(@RequestBody Object query) { // String query
ExecutionResult result;
if (query instanceof String) {
result = graphQL.execute(query.toString());
} else{
Map b = (HashMap) query;
result = graphQL.execute(b.get("query").toString());
}
return new ResponseEntity<Object>(result, HttpStatus.OK);
}
现在看来只有json
版本有效。原因是当我使用文字时得到:
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'text/plain;charset=UTF-8' not supported",
"path": "/graphql"
是否还有其他配置选项?我不知道在上一个示例中variables
是否会得到很好的处理。