Github API:获取Github存储库的主题

时间:2017-04-06 15:47:37

标签: github repository github-api

Github API文档向filter repositories by topics提供说明。 有没有办法使用API​​从特定的仓库中获取主题?

5 个答案:

答案 0 :(得分:5)

我不知道有一种方法可以获取存储库的主题,但如果你执行get for a repository,则返回的存储库json对象将具有一个topic属性该存储库主题的数组。

在该文档页面的顶部,您会注意到要返回主题,您需要在GET请求中添加特定标题:"Accept":"application/vnd.github.mercy-preview+json"

希望这有帮助!

答案 1 :(得分:4)

您可以使用Github GraphQL API

执行此操作

查询:

{
  repository(owner: "twbs", name: "bootstrap") {
    repositoryTopics(first: 10) {
      edges {
        node {
          topic {
            name
          }
        }
      }
    }
  }
}

这将返回前10个主题和每个主题的名称,如下所示 响应:

{
  "data": {
    "repository": {
      "repositoryTopics": {
        "edges": [
          {
            "node": {
              "topic": {
                "name": "css"
              }
            }
          },
          {
            "node": {
              "topic": {
                "name": "bootstrap"
              }
            }
          },
          {
            "node": {
              "topic": {
                "name": "javascript"
              }
            }
          },
          {
            "node": {
              "topic": {
                "name": "html"
              }
            }
          }
        ]
      }
    }
  }
}

GitHub GraphQL Explorer

中测试一下

答案 2 :(得分:1)

我遇到了类似的问题,所以我制作了一个节点模块,只需要一行代码来完成

var github_topics = require('github-topics');
var topics = github_topics.gettopics('url_of_repo');

例如

var topics = github_topics.gettopics('https://github.com/Aniket965/blog');

它将返回该github存储库的主题数组,该节点模块的链接为NPM

答案 3 :(得分:0)

您可以使用Github API(目前处于“预览模式”)轻松完成此操作:

curl -H "Accept: application/vnd.github.mercy-preview+json" https://api.github.com/repos/twbs/bootstrap/topics
{
  "names": [
    "css",
    "bootstrap",
    "javascript",
    "html",
    "jekyll-site",
    "scss",
    "css-framework",
    "sass"
  ]
}

您需要包括额外的标题Accept: application/vnd.github.mercy-preview+json

有一个“但是”,因为它处于“预览模式”,因此不支持用于生产用途(请阅读下面链接中的“注意”和“警告”部分)。

另请参阅:

答案 4 :(得分:0)

我添加了带有接受标头的抓取:

  SELECT b.name AS [Business]
         ,r.id         
         ,b.is_open [Is Open]
    FROM review r
    JOIN business b 
      ON r.business_id = b.id
    JOIN user u 
      ON r.user_id = u.id
  WHERE r.fans > 100