【问题标题】:How can I fetch information about a specific repository in github owned by an Organization?如何获取有关组织拥有的 github 中特定存储库的信息?
【发布时间】:2013-07-18 03:53:19
【问题描述】:

我正在使用 github API 以编程方式获取有关不同存储库的信息,但遇到了问题。

我知道我可以使用我的身份验证密钥访问私有存储库,因为我能够以编程方式创建存储库。

这是我正在使用的 PHP curl 代码:

$url = 'https://api.github.com/orgs/<VALID ORG>/repos';

$headers = array();
$headers[] = 'Authorization: token <myvalidauthtoken>';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
$result = curl_exec($ch);
$r = json_decode($result);
curl_close($ch);

目前,此代码已成功从我的组织中提取所有存储库,但我们有 500 多个存储库,因此仅针对一个存储库信息的信息将它们全部删除是不可行的。 (来自http://developer.github.com/v3/repos/#list-organization-repositories

现在,如果我查看用户拥有的存储库(而不是组织存储库),我发现请求应该如下所示:

GET /repos/:owner/:repo (http://developer.github.com/v3/repos/#get)

现在我的格式是:

GET /orgs/:org/repos (http://developer.github.com/v3/repos/#list-organization-repositories)

所以我在 URL 上尝试了几个排列:

$url = 'https://api.github.com/orgs/<VALID ORG>/repos/<VALIDREPO>';
$url = 'https://api.github.com/<VALID ORG>/<VALIDREPO>';
$url = 'https://api.github.com/repos/<VALID ORG>/repos/<VALIDREPO>';
$url = 'https://api.github.com/repos/orgs/<VALID ORG>/repos/VALIDREPO>';

但所有这些都失败了。各位极客有什么想法吗?

【问题讨论】:

  • 定义“失败”。 您到底得到了什么错误/响应?
  • 来自标头的 404 个响应,因此显然这些都不是存储库的有效 URL。
  • 不,不一定是这样。如果您无权查看请求的项目,以及在某些其他情况下,也会返回 404
  • 我已经确定我的身份验证密钥对这些存储库有效。我创建了一个我尝试使用相同身份验证密钥获取的存储库。
  • 另外,我发布的原始代码列出了我拥有的所有私有存储库。就像我说的,我不想从 500 个存储库中拉下数据并且必须解析所有内容,最好只拉下一个存储库。

标签: git api github github-api


【解决方案1】:

我不敢相信我做到了。

为了记录,Nevik 在组织的格式中是正确的:

https://api.github.com/repos/<VALID ORG>/<VALIDREPO>

我这样设置我的网址:

$url = 'https://api.github.com/repos/$org_name/$repo_name';

看到问题了吗?

在 PHP 中,单引号不解析内部变量,双引号可以:

$url = "https://api.github.com/repos/$org_name/$repo_name";

一切都解决了。

再次感谢 Nevik 的健全性检查!

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2023-04-07
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    相关资源
    最近更新 更多