如何修复 GraphQL 中的“语法错误:预期名称,找到字符串\”查询\“”

lia*_*etz 10 postman graphql

我正在尝试通过使用 Postman 向服务器发送 GraphQL 查询来测试我构建的 GraphQL 服务器。

当我使用原始单选按钮时它有效,但是当我尝试使用 GraphQL 单选按钮时,它返回"message": "Syntax Error: Expected Name, found String \"query\"".

我试图改变语法:主要是添加或删除大括号,但什么也没发生。

我以原始模式发送的查询(工作):

{
    person(id:"123456789") {
        personal_info {
            address
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

我在 GraphQL 模式下发送的查询:

询问:

query getPerson ($id: String){
    person(id: $id){
        personal_info {
            address
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

图形变量:

{
    "id": "123456789"
}
Run Code Online (Sandbox Code Playgroud)

我希望得到我要求的数据,但我收到错误消息:

{
    "errors": [
        {
            "message": "Syntax Error: Expected Name, found String \"query\"",
            "locations": [
                {
                    "line": 1,
                    "column": 2
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Vah*_*aha 5

我有同样的问题。在研究过程中,我在stackoverflow上找到了下一个答案 ,感谢@gbenga_ps。

通过向 Postman 请求添加正确的标头来解决: 添加标头内容类型:application/json

请求正文应如下所示:

{
    courses {
        title
    }
}
Run Code Online (Sandbox Code Playgroud)

请求示例

如果内容类型设置不正确,则会发生如下错误:

{
    "errors": [
        {
            "message": "Syntax Error: Expected Name, found String \"query\"",
            "locations": [
                {
                    "line": 1,
                    "column": 2
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

错误响应示例