GraphQL 片段 JSON 格式

2024-02-04

我正在尝试使用 GitHub v4 (GraphQL) API 从 GitHub 读取一些数据。我已经编写了一个 Java 客户端,该客户端运行良好,直到我开始用 GraphQL 片段替换一些查询。

我最初使用 GraphiQL 来测试我的查询,并且在其中添加片段非常简单。但是,在转换为 JSON 时,我还没有弄清楚正确的格式。我试过了:

{ "query": "{ ... body_of_query ... } fragment fragname on Blob { byteSize text }" }

{ "query": "{ ... body_of_query ... }, fragment fragname on Blob { byteSize text }" }

{ "query": "{ ... body_of_query ... }", "fragment": "{fragname on Blob { byteSize text } }" }

编辑:添加@Scriptonomy:

{
 query {
   search(first:3, type: REPOSITORY, query: \"language:HCL\") {
     edges {
      node {
        ... on Repository {
          name
          descriptionHTML
          object(expression: \"master:\") {
            ... on Tree {
              ...recurseTree
            }
          }
        }
      }
      cursor
    }
    pageInfo {
      endCursor
      hasNextPage
    }
  }
}

fragment recurseTree on Tree {
  entries {
    name
    type
  }
}

I'm sure继续对此进行随机变化会很有趣,而且我早上在片段上搜索各种 GraphQL 文档和博客非常有趣,我什至可能实际上猜到了正确的答案,但括号不匹配(我只是使用硬编码 JSON 直到我知道格式——回想起来也许不是最明智的选择)。

我希望有人能知道正确的格式,并在我因 GraphQL-doc 过度暴露而崩溃之前让我走上正确的道路。


片段在与查询本身相同的 JSON 主体属性中发送。您可以查看使用片段的示例here https://www.graph.cool/docs/faq/using-graphql-fragments-cae2ahz0ne/.

有效的 GraphQL 请求通常是将查询编码为 URL 查询参数的 GET 请求,或者是带有 JSON 正文的 POST 请求。 JSON 主体有一个必需的键,query和一个可选字段,variables。对于您的情况,JSON 需要如下所示:

{
  "query": "{\n query {\n   search(first:3, type: REPOSITORY, query: \"language:HCL\") {\n     edges {\n      node {\n        ... on Repository {\n          name\n          descriptionHTML\n          object(expression: \"master:\") {\n            ... on Tree {\n              ...recurseTree\n            }\n          }\n        }\n      }\n      cursor\n    }\n    pageInfo {\n      endCursor\n      hasNextPage\n    }\n  }\n}\n\nfragment recurseTree on Tree {\n  entries {\n    name\n    type\n  }\n}"
}

那就是JSON.stringify您的问题中逐字查询字符串的版本。

我建议您从连接到 GitHub GraphQL API 的 GraphiQL 实例运行查询并查看网络请求。您可以将 GraphQL 请求复制为 cuRL,以查看 JSON 正文的外观。

如果您仍然收到 400,请分享一些代码,因为这意味着您的请求格式错误,因此它可能从未到达 GraphQL 解析器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GraphQL 片段 JSON 格式 的相关文章

随机推荐