使用GitHub list-issues-for-a-repository API

Yim*_*ong 8 github github-api github-api-v3

当您转到GitHub时,在Issues下,它将所有未解决的问题作为HTML页面拉出。我们希望实现一个仪表板,以显示存储库中的所有问题(按标签分组),包括那些未正确标记的问题。

这是相应的存储库列表问题API

当我最初使用jQuery和Javascript时,现在使用PHP进行概念验证,因为其内置的会话处理功能使我可以使用同一页面登录,让GitHub进行身份验证和回调并继续。但这对我来说并不重要,任何语言都可以。

我已经设法通过OAUTH2访问GitHub API,但是当我通过https://api.github.com/orgs/{org}/repos它获取存储库列表时,它会显示为一个空数组。

因为/orgs/{org}/reposAPI返回一个空数组,所以相应的/repos/{org}/{repo}/issuesAPI 当然会返回一个错误。

编辑:请参阅此后续解决方案!很高兴我终于可以正常工作了!

Nic*_*las 7

这是一个REST API。您需要使用Http请求来调用某些终结点。我不知道您要使用哪种语言,因此我无法为您提供实现此目标的良好示例。如果您尚不知道要使用哪种语言,请使用邮差创建对github API的REST API调用。

假设您要检索Microsoft的Typescript存储库的问题,则需要调用以下API端点:

https://api.github.com/repos/microsoft/typescript/issues
Run Code Online (Sandbox Code Playgroud)

请注意,在这里,我已经替换了我要获取的文档的:owner:repo价值。

然后,您可以将一些参数传递给调用以过滤数据,例如API标签。

https://api.github.com/repos/microsoft/typescript/issues?labels=API
Run Code Online (Sandbox Code Playgroud)

这只会返回标记为的问题API

这是如何使用API​​的基础。


Ter*_*nox 5

您可以使用 jQuery Ajax 访问 Github API 并添加基本身份验证标头进行身份验证(请参阅此处),下面显示了一个示例,这将提取给定存储库的问题并在警报窗口中显示前 10 个问题。

请参阅此处有关拉取问题的文档:https://developer.github.com/v3/issues/以查看可使用哪些参数来过滤、排序等。

例如,您可以使用以下命令获取标记为“bug”的所有问题:

/issues?labels=bug
Run Code Online (Sandbox Code Playgroud)

这可以包括多个标签,例如

/issues?labels=enhancement,nicetohave
Run Code Online (Sandbox Code Playgroud)

您可以轻松修改以在表格等中列出。

const username = 'github_username'; // Set your username here
const password = 'github_password'; // Set your password here
const repoPath = "organization/repo" // Set your Repo path e.g. microsoft/typescript here

$(document).ready(function() {
    $.ajax({
        url: `https://api.github.com/repos/${repoPath}/issues`,
        type: "GET",
        crossDomain: true,
        // Send basic authentication header.
        beforeSend: function (xhr) {
            xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
        },
        success: function (response) {
            console.log("Response:", response);
            alert(`${repoPath} issue list (first 10):\n - ` + response.slice(0,10).map(issue => issue.title).join("\n - "))
        },
        error: function (xhr, status) {
            alert("error: " + JSON.stringify(xhr));
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

下面的代码片段列出了使用 jQuery 和 Github API 的(公共)存储库的问题:

(请注意,我们此处不添加身份验证标头!)

/issues?labels=bug
Run Code Online (Sandbox Code Playgroud)
/issues?labels=enhancement,nicetohave
Run Code Online (Sandbox Code Playgroud)