Graphql post 主体 "Must provide query string."

Graphql post body "Must provide query string."

我使用 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 中发送更新。

URL 字符串太短。我必须像

一样发送更新模型
mutation {
  update(id: 2, x1: "zazaza", x2: "zazaza", x3: "zazaza" ...(more more fields)...) {
    idn
  }
}

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

Post请求需要管理headers信息。

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

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

但请求 body 看起来像字符串

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

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

在邮递员中,select 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
   }
 }

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

将内容类型切换为 JSON。 像这样

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

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

npm install body-parser

如-

const bodyParser = require('body-parser');

app.use(bodyParser.json()); // application/json

我的工作方式如下:

在body

在Headers

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

而how was quoted before changes the verb to POST.

  1. 进入相关网页,打开“inspect”(写点击-> 检查 || chrome)

    中的 Ctrl+Shift+I
  2. 转到网络选项卡并复制 cURL 命令

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

  4. 粘贴复制的命令

  5. 然后,继续->