【问题标题】:How to fix "Syntax Error: Expected Name, found String \"query\"" in GraphQL如何修复“语法错误:预期名称,在 GraphQL 中找到字符串 \"query\"”
【发布时间】:2020-01-01 00:09:40
【问题描述】:

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

当我使用原始单选按钮时它可以工作,但是当我尝试使用 GraphQL 单选按钮时,它会返回 "message": "Syntax Error: Expected Name, found String \"query\""

我试图改变语法:主要是添加或删除花括号,但没有任何反应。

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

{
    person(id:"123456789") {
        personal_info {
            address
        }
    }
} 

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

查询:

query getPerson ($id: String){
    person(id: $id){
        personal_info {
            address
        }
    }
}

图形变量:

{
    "id": "123456789"
}

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

{
    "errors": [
        {
            "message": "Syntax Error: Expected Name, found String \"query\"",
            "locations": [
                {
                    "line": 1,
                    "column": 2
                }
            ]
        }
    ]
}

【问题讨论】:

  • 尝试替换:query getPerson ($id: String){...} by mutation getPerson ($id: String){...}
  • 当查询参数类型从简单的“字符串”类型更改为 graphql 的“输入”类型时,我也遇到了同样的情况。 **重启服务器就行了

标签: graphql postman


【解决方案1】:

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

通过在 Postman 请求中添加正确的标头来解决:

请求正文应该类似于下一个:

{
    courses {
        title
    }
}

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

{
    "errors": [
        {
            "message": "Syntax Error: Expected Name, found String \"query\"",
            "locations": [
                {
                    "line": 1,
                    "column": 2
                }
            ]
        }
    ]
}

【讨论】:

  • 我将原始查询转换为 GraphQL,但忘记从 application/graphql 更新 Content-Type,谢谢!
猜你喜欢
  • 2020-10-03
  • 2021-02-18
  • 2018-06-28
  • 1970-01-01
  • 2021-07-28
  • 2023-03-31
  • 1970-01-01
  • 2021-12-09
  • 2019-04-05
相关资源
最近更新 更多