【问题标题】:如何通过邮递员发送graphql查询?
【发布时间】:2017-07-20 03:03:09
【问题描述】:

我用

POST type
URL http://######/graphql
Body: 
query: "query: "{'noteTypes':  {'name', 'label', 'labelColor', 'groupName', 'groupLabel', 'imageUrl'}}"

但它会返回 "message": "必须提供查询字符串。"

【问题讨论】:

    标签: graphql postman


    【解决方案1】:

    有一个更好的方法可以使用 REST 客户端 Insomnia

    文档在这里,如何发送 graphql 查询:https://support.insomnia.rest/article/61-graphql


    以下是邮递员的步骤

    第 1 步。

    在 Chrome 中运行 GraphiQL,打开 Chrome Dev Console,点击 Network 标签,然后从 graphiql 进行查询,当您进行查询时,network 标签将显示 graphql 请求...

    第 2 步。

    graphql请求复制请求查询,选择Copy as cURL (cmd)

    第 3 步。

    打开 Postman,在左上角单击 Import 按钮,单击 Import 后,您必须单击 Paste Raw Text,然后将复制的 cURL 请求粘贴到步骤 2 中,完成后单击Import

    第 4 步。

    Postman 已准备好发送 Graphql 请求,只需单击 Send 按钮,您将在正文的响应框中看到 Response,如下所示

    第 5 步。

    要查看查询是如何发送的,请单击Headers 旁边的Body 选项卡,您将了解如何以 JSON 格式提供来自邮递员的字段。

    例如:edges {\n node {\n id\n jobId\n }\n,如果要查看其他字段,则需要添加后缀\n

    如果需要name 则赞:edges {\n node {\n id\n jobId\n name\n }\n

    \n 这里只是表示代表一个新行。相反,您可以通过提供如下所示的清晰且说明性的 JSON 来使其更简单

    ============================================== ================================

    注意:正文类型必须是 application/json content-type 的原始类型。因此,查询必须是带引号的有效 JSON ".."

    {  
       "query":"{viewer {user {edges {node {id jobId name }}}}}"
    }
    

    ============================================== ================================

    如果您知道如何在正文中发送查询以及向邮递员发出请求时需要的其他内容,则可以直接从 step 5 开始

    使用简化的 JSON

    【讨论】:

    • 太棒了!太棒了!
    • 真的 postman 对 graphql 没用,我们需要一个带有 postman 屏幕的 graphiql
    • 太棒了,谢谢你的帮助
    • 使用与我相同的步骤时:导入 Curl 时出错:找到 2 个无选项参数。仅支持一个(URL)
    • 复制为 cURL(bash) 为我工作,而不是复制为 cURL(cmd),在 windows 10 操作系统上使用 chrome postman 应用程序
    【解决方案2】:

    如果 GraphQL 服务器响应 Content-type: application/graphqlpostman.setEnvironmentVariable,则不需要 INSOMNIA,

    去做吧:

    在标题选项卡中: Content-Type: application/graphql

    在正文选项卡中,选择“原始”,输入您的查询

    【讨论】:

    • 我得到“没有查询字符串存在”尝试这个
    • 非常适合我!使用带有 express 和 express-graphql 依赖项的 Node.js。
    【解决方案3】:

    为搜索该主题的任何人添加此内容...您可以通过 Insomnia 更好、更轻松地利用和测试 GraphQL 调用:

    https://insomnia.rest

    对于 GraphQL 开发来说,这真是太棒了。

    【讨论】:

    【解决方案4】:

    有一个简单的方法来做到这一点。使用预请求脚本对负载进行字符串化 (source)。

    第 1 步。

    在请求正文中放置有效负载的占位符。

    {
        "query":{{query}}
    }
    

    第 2 步。

    在预请求脚本中创建有效负载并将其存储在环境变量中。

    postman.setEnvironmentVariable("query", JSON.stringify(
    `
    {
      search(query: "test", type: ISSUE, first: 10) {
        issueCount
        edges {
          node {
            ... on Issue {
              title
              id
              state
              closed
              repository {
                name
              }
            }
          }
        }
      }
    }
    `
    ));
    

    就是这样。

    【讨论】:

    • 这就像一个魅力,避免经历前面答案中描述的所有手动步骤的麻烦!谢谢。
    • 我们必须使用旧版本的 graphql 或者有一个特定的设置,但它最终与上述提议和一个微小的变化“body”而不是“query”一起工作: > placeholder > { > “body ":{{查询}} > }
    【解决方案5】:

    更新 8-2019 - 我知道这是旧的,但关于 POSTMAN,如果您还没有弄清楚,他们确实有一个用于发布正文的 graphql(测试版)选项。无需添加任何额外的标题。

    【讨论】:

    • 现在 Postman 的 GraphQL 身体类型不再处于测试阶段!这是一个稳定的可用选项,如图here
    【解决方案6】:

    更新 2:

    使用 POSTMAN 并不实用,因为它正在以一种简单的方式添加标题,这需要很长时间,而且我认为 POSTMAN 不适合使用 graphql,

    您可以在此处关注相关进展: https://github.com/postmanlabs/postman-app-support/issues/1669

    我建议使用另一个包插件,例如:

    the best (like postman , but profile and sync price 5$ monthly):
       https://insomnia.rest/
    others:
       https://github.com/andev-software/graphql-ide
       https://github.com/imolorhe
    

    对于 graphiql(没有添加标题的可能性),您需要设置三件事(不容易输入):

    1. 标题:

      内容类型:application/json

    2. 正文:

      选择Ray

      选择 JSON(应用程序/json)

    3. 使用“查询”和图形查询的“值”组合 javascript 对象。像 js 中的所有对象一样,它需要属性和值,在这种情况下,“引号”是属性,值必须带有双引号。在值(graphl 字符串)内部,您不需要编写 js 对象,因此您不需要使用双引号,它只是一个字符串。

      {"query":"{ allQuotes { text } }" }

      问题是您需要在一行中输入所有内容,不像 grapIql...邮递员 github 中有一个帖子要求,因此使用 graphql 很容易:

    【讨论】:

      【解决方案7】:

      Postman 刚刚在 7.2 版本中发布了 inbuilt GraphQL support

      此版本支持

      • 在请求正文中作为 POST 请求发送 GraphQL 查询
      • 支持 GraphQL 变量
      • 在 Postman 中使用 GraphQL 架构类型创建 API
      • 与用户定义的 GraphQL 架构集成的查询自动完成

      请试一试,并在our community forum上的跟踪线程上向我们提供反馈

      【讨论】:

        【解决方案8】:

        当我尝试使用graphQl 查询使用POSTMAN 时,我遇到了同样的问题, 在 POSTMAN 中,使用 json 类型从 raw 选项卡发送数据。

        查询命令:

        {"query":"{user(id:902){id,username,DOB}}"}
        

        变异命令:

        { "query": "mutation {createMutations(reviewer:36, comments:\"hello\",data_id: 1659, approved: true ){id}}" }
        
               #commnent: String Type
               #data_id:Int Type
               #approved:Boolean Type
        

        【讨论】:

        • 您能告诉我们如何传递一个对象吗?这里如果 reviewer 和 cmets 是新输入对象的一部分,那么命令将如何?
        【解决方案9】:

        如果您使用的是 Visual Studio,我已经编写了一个插件来将 GraphQL 转换为 Restful 主体

        https://marketplace.visualstudio.com/items?itemName=orasik.graphql-to-rest-queries

        【讨论】:

        • 你拯救了我的周末:)
        • @Oras 非常感谢。这真的很有帮助:)
        【解决方案10】:

        Postman 最近推出了对 GraphQL 的开箱即用支持:https://blog.getpostman.com/2019/06/18/postman-v7-2-supports-graphql/

        下面是本地测试GraphQL的截图:

        注意:使用spring-boothttps://www.baeldung.com/spring-graphql在本地运行GraphQL

        【讨论】:

          【解决方案11】:

          源自Estevão Lucas' answer

          你也可以在邮递员上使用标题Content-type: application/json

          并用以下方式定义主体:

          {
              "query": "{ your_query }"
          }
          

          这很容易在客户端构建以形成请求负载。

          例如

          输出:

          【讨论】:

          • 你能告诉我如何传递一个对象吗?例如,电子邮件和密码作为另一个对象的一部分,那么请求有效负载如何更改?
          • 我不确定你的意思,但我的理解是你想传递一个对象,例如credentials 具有passwordemail 的属性。在这种情况下,您可能需要在您的突变中定义一个输入类型对象。并在查询中使用$input: <yourinputmutation>! 或类似名称。
          【解决方案12】:

          结帐https://github.com/hasura/graphqurl - GraphQL 的 curl:

          • 使用自动完成功能进行 GraphQL 查询的 CLI
          • 针对任何端点(使用自定义标头)在本地运行 GraphiQL
          • 在 nodejs 或浏览器中用作库
          • 支持订阅

          我是作者之一。

          gq https://gentle-anchorage-72051.herokuapp.com/v1alpha1/graphql -i
          

          【讨论】:

            【解决方案13】:

            如果我们可以传递 header 类型,则添加 header Content-type: application/graphql

            以下链接可以作为参考: link description here

            【讨论】:

              【解决方案14】:

              通过添加标题,我们可以在邮递员中运行 graphql 查询

              Content-type: application/graphql

              【讨论】:

                猜你喜欢
                • 2020-11-12
                • 2015-05-27
                • 2019-01-20
                • 2023-02-20
                • 2017-07-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-09-04
                相关资源
                最近更新 更多