如何从Github Graphql API获取Readme.MD?

6

v3版本具有检索readme.md文件的特定API。但是在新的V4 GraphQL中,存储库对象中没有此类字段。

请问有人知道如何检索readme文件吗?

谢谢!

2个回答

15

目前还没有获取README.md文件的特定实体,但您可以像正常检索任何其他文件一样检索它:

{
  repository(owner: "gitpoint", name: "git-point") {
    object(expression: "master:README.md") {
      ... on Blob {
        text
      }
    }
  }
}

谢谢你的回答。我看到Git对象下只列出了5个字段:abbreviatedOid(字符串!)| commitResourcePath(URI!)| commitUrl(URI!)| oid(GitObjectID!)| repository(Repository!),其中没有一个是blob。你能告诉我如何准确地获取到blob吗?谢谢! - user5435999
标记了!非常感谢。 - user5435999
2
注意这是大小写敏感的 - 所以它有一个缺点,不支持小写的readme文件。有人知道如何实现不区分大小写吗? - Secret
2
GitHub开始使用“main”作为默认分支名称。您应该使用HEAD:README.md而不是master:README.md。 - aabuhijleh
@aabuhijleh 这取决于存储库创建的时间。 - machour
关于Github企业版:这个查询在我的个人git-hub上完全有效,但是对于GHE我会得到一个空对象返回,有什么想法可以让它在那里工作吗? GHE终端点:https://github.comcast.com/api/graphql - jWolf

3

看起来由于GitObject实现了Blob,您可以使用“... on”语法访问它的属性,其中包含对象的内容。

为了访问相关的对象,请以“branch:filename.ext”的格式传递分支和带扩展名的文件名,并从结果中检索Blob以及其中的文本。

可以同时检索多个对象,允许您检查备用大小写,例如小写的“readme.md”名称。只需为对象提供别名即可。下面是示例:

   {
    repository(owner: "owner", name: "name") {
      upCase: object(expression: "master:README.md") {
        ... on Blob {
          text
        }
      }
      object(expression: "master:readme.md") {
        ... on Blob {
          text
        }
      }
      otherFile: object(expression: "master:index.js") {
        ... on Blob {
          text
        }
      }
    }

这可能有助于解释"... on"语法。 https://graphql.github.io/graphql-spec/June2018/#sec-Inline-Fragments

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接