Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GraphQL片段JSON格式_Graphql - Fatal编程技术网

GraphQL片段JSON格式

GraphQL片段JSON格式,graphql,Graphql,我正试图用他们的v4(GraphQL)API从GitHub读取一些数据。我已经编写了一个Java客户机,在我开始用GraphQL片段替换一些查询之前,它运行良好 我最初使用GraphiQL测试我的查询,在那里添加片段非常简单。然而,当翻译成JSON时,我还没有找到正确的格式。我试过: {“query”:“{…body\u of_query…}Blob上的片段fragname{byteSize text}”} {“query”:“{…body\u of_query…},Blob上的片段fragna

我正试图用他们的v4(GraphQL)API从GitHub读取一些数据。我已经编写了一个Java客户机,在我开始用GraphQL片段替换一些查询之前,它运行良好

我最初使用GraphiQL测试我的查询,在那里添加片段非常简单。然而,当翻译成JSON时,我还没有找到正确的格式。我试过:

{“query”:“{…body\u of_query…}Blob上的片段fragname{byteSize text}”}

{“query”:“{…body\u of_query…},Blob上的片段fragname{byteSize text}”}

{“query”:“{…body\u 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
  }
}
我敢肯定,不断地在这上面抛出随机变量会很有趣,而且我的早上在片段上搜索各种GraphQL文档和博客非常有趣,我甚至可能已经猜到了正确的答案,但有不匹配的参数(在我了解格式之前,我只是使用硬编码的JSON——回头看,这可能不是最明智的选择)


我希望有人知道正确的格式,并在我从GraphQL文档过度曝光之前为我确定正确的方向。

没有必要将GraphQL查询转换为JSON。这将是您的查询:

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

片段与查询本身在JSON主体的相同属性中发送

有效的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解析器。

对于未来的用户,以及像我这样遇到此障碍的人

查询需要按给定的顺序发送

{ "query": "fragment fragname on Blob { byteSize text } methodName(ifMethodParam: paramVal){...fragname }" }

希望这能对其他人有所帮助。

Edit:Adding for@Scriptonomy我给了这个版本一次机会,但得到了400的回复代码。我已经在这个版本的问题编辑中包含了完整的帖子数据(所有内容都用引号括起来),以防你或其他人看到它并说,“嗯,你做错了。”示例链接已断开这确实不会为所问问题添加任何信息。另外,链接仍然断开。我成功了!希望我能更多地关注你的答案:D