GraphQL片段JSON格式
我正试图用他们的v4(GraphQL)API从GitHub读取一些数据。我已经编写了一个Java客户机,在我开始用GraphQL片段替换一些查询之前,它运行良好 我最初使用GraphiQL测试我的查询,在那里添加片段非常简单。然而,当翻译成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
{“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