【问题标题】:Graphql post body "Must provide query string."Graphql 帖子正文“必须提供查询字符串。”
【发布时间】:2016-08-10 01:08:53
【问题描述】:

我使用 Express-graphql 中间件。 我在正文中发送以下请求:

POST /graphql HTTP/1.1
Host: local:8083
Content-Type: application/graphql
Cache-Control: no-cache
Postman-Token: d71a7ea9-5502-d5fe-2e36-0ae49c635a29

{
   testing {
      pass(id: 1) {
        idn
      }
    }
}

有错误

{
  "errors": [
    {
      "message": "Must provide query string."
    }
  ]
}

在 graphql 中,我可以在 URL 中发送更新。

网址字符串太短。我必须像这样发送更新模型

mutation {
  update(id: 2, x1: "zazaza", x2: "zazaza", x3: "zazaza" ...(more more fields)...) {
    idn
  }
}

我认为它必须在请求正文中。如何发送“更新”查询或我做错了什么?

【问题讨论】:

  • "在 graphql 中,我可以在 URL 中发送更新。" graphiql?
  • 我使用“邮递员”发送请求。
  • 您需要将邮递员标题中的“内容类型”更改为“application/json”,并在请求正文中使用“GraphQL”选项卡和“查询”和“graphql 变量”

标签: express graphql graphql-js


【解决方案1】:

post 请求需要管理 headers 信息。

  1. 使用Http客户端:Content-Type application/json

  2. 使用 Postman 客户端:Content-Type application/graphql

但请求正文看起来像字符串

{"query":"mutation{update(id:1,x1:\"zazaz\",x2:\"zazaz\"......){id x1 x2}}"}

【讨论】:

    【解决方案2】:

    如果您正在使用 graphql 并想使用 postman 或任何其他 Rest 客户端对其进行测试,请执行此操作。

    在邮递员中,选择POST 方法并输入您的URL 并将Content-Type 设置为application/graphql,然后在正文中传递您的查询。

    例子:

    http://localhost:8080/graphql
    Mehtod: POST
    Content-Type: application/graphql
    Body: 
      query{
        FindAllGames{
        _id
        title
        company
        price
        year
        url
       }
     }
    

    就是这样,你会得到回应。

    【讨论】:

    • 您使用的请求测试器是什么?
    【解决方案3】:

    将内容类型切换为 JSON。 赞这个

    【讨论】:

    • 请为您的回答提供一些评论。
    • 它不是 JSON。它唯一的“查询”:“graphQL 查询字符串”,它不正确。我们必须发送有效的 JSON 但不能这样做
    【解决方案4】:

    使用 Postman 版本 7.2.2 我遇到了类似的问题。这个版本的 Postman 支持开箱即用的 Graphql。将 Content-type 更改为 application/json 为我修复了它。

    【讨论】:

      【解决方案5】:

      这通常发生在您的“express-graphql”没有收到任何参数时。您需要在您的应用程序中添加一个 json/应用程序解析器。

      npm install body-parser
      

      例如-

      const bodyParser = require('body-parser');
      
      app.use(bodyParser.json()); // application/json
      

      【讨论】:

      • bodyParser到底是从哪里来的,常见的,这里要彻底,什么lib?
      • @PositiveGuy,你可以先npm install body-parser --save,然后再import bodyParser from 'body-parser'
      【解决方案6】:

      对我来说,工作如下:

      在体内

      在标题中

      不要忘记在正文设置上标记 GraphQl [x]

      以及如何在将动词更改为POST之前引用。

      【讨论】:

      • 你拯救了我的一天!
      【解决方案7】:
      1. 转到相关网页并打开“检查”(通过写点击-> 检查 || chrome 中的 Ctrl+Shift+I)

      2. 转到网络选项卡并复制 cURL 命令

      3. 打开邮递员,然后导入 -> 原始文本

      4. 粘贴复制的命令

      5. 然后,继续->

      【讨论】:

        猜你喜欢
        • 2018-01-13
        • 2018-12-30
        • 2019-06-02
        • 2019-06-09
        • 2022-01-18
        • 2020-01-26
        • 2017-10-26
        • 2019-05-23
        • 2020-01-27
        相关资源
        最近更新 更多