使用 GitHub list-issues-for-a-repository API
Using GitHub list-issues-for-a-repository API
当您转到 GitHub 时,在问题下,它会将所有未解决的问题作为 HTML 页面拉出。我们想实现一个仪表板,显示存储库中的所有问题,按标签分组,包括那些未正确标记的问题。
这是对应的list-issues-for-a-repository API.
虽然我最初使用 jQuery 和 Javascript,但现在我使用 PHP 进行概念验证,因为它的内置会话处理让我可以使用相同的页面要登录,请 GitHub 进行身份验证和回调,然后继续。不过对我来说无所谓,任何语言都可以。
我已经设法通过 OAUTH2 访问 GitHub API,但是当我通过 https://api.github.com/orgs/{org}/repos
获取存储库列表时,它显示为一个空数组。
因为/orgs/{org}/repos
APIreturn是一个空数组,当然对应的/repos/{org}/{repo}/issues
API也会return出错。
编辑:参见解决方法!很高兴我终于成功了!
休息API。您需要使用 Http 请求调用一些端点。
我不知道你想使用什么语言,所以我不能给你一个很好的例子来说明如何实现这一点。
如果您还不知道要使用哪种语言,请使用 postman 创建对 github API 的 REST API 调用。
假设您想检索 microsoft's typescript repo 的问题,您需要调用此 API 端点:
https://api.github.com/repos/microsoft/typescript/issues
请注意,我已将文档的 :owner
和 :repo
值替换为我正在尝试获取的文档。
然后您可以将一些参数传递给调用以过滤您的数据,例如 API 标签。
https://api.github.com/repos/microsoft/typescript/issues?labels=API
这只会 return 个标记为 API
的问题。
这是使用 API 的基础知识。
您可以使用 jQuery Ajax 访问 Github API 并添加基本身份验证 header 进行身份验证(参见 here ),下面显示了一个示例,这将提取给定回购的问题并在警报中显示前 10 个 window。
请在此处查看有关提取问题的文档:https://developer.github.com/v3/issues/ 以了解您可以使用哪些参数来过滤、排序等。
例如,您可以使用以下方法获取所有标记为 'bug' 的问题:
/issues?labels=bug
这可以包含多个标签,例如
/issues?labels=enhancement,nicetohave
您可以轻松修改以在 table 等中列出
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));
}
});
});
下面是使用 jQuery 和 Github API 的 (public) 回购问题的片段列表:
(注意我们不在此处添加身份验证 header!)
const repoPath = "leachim6/hello-world" //
$(document).ready(function() {
$.ajax({
url: `https://api.github.com/repos/${repoPath}/issues`,
type: "GET",
crossDomain: true,
success: function (response) {
tbody = "";
response.forEach(issue => {
tbody += `<tr><td>${issue.number}</td><td>${issue.title}</td><td>${issue.created_at}</td><td>${issue.state}</td></tr>`;
});
$('#output-element').html(tbody);
},
error: function (xhr, status) {
alert("error: " + JSON.stringify(xhr));
}
});
});
<head>
<meta charset="utf-8">
<title>Issue Example</title>
<link rel="stylesheet" href="css/styles.css?v=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"></script>
</head>
<body style="margin:50px;padding:25px">
<h3>Issues in Repo</h3>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Issue #</th>
<th scope="col">Title</th>
<th scope="col">Created</th>
<th scope="col">State</th>
</tr>
</thead>
<tbody id="output-element">
</tbody>
</table>
</body>
当您转到 GitHub 时,在问题下,它会将所有未解决的问题作为 HTML 页面拉出。我们想实现一个仪表板,显示存储库中的所有问题,按标签分组,包括那些未正确标记的问题。
这是对应的list-issues-for-a-repository API.
虽然我最初使用 jQuery 和 Javascript,但现在我使用 PHP 进行概念验证,因为它的内置会话处理让我可以使用相同的页面要登录,请 GitHub 进行身份验证和回调,然后继续。不过对我来说无所谓,任何语言都可以。
我已经设法通过 OAUTH2 访问 GitHub API,但是当我通过 https://api.github.com/orgs/{org}/repos
获取存储库列表时,它显示为一个空数组。
因为/orgs/{org}/repos
APIreturn是一个空数组,当然对应的/repos/{org}/{repo}/issues
API也会return出错。
编辑:参见
休息API。您需要使用 Http 请求调用一些端点。 我不知道你想使用什么语言,所以我不能给你一个很好的例子来说明如何实现这一点。 如果您还不知道要使用哪种语言,请使用 postman 创建对 github API 的 REST API 调用。
假设您想检索 microsoft's typescript repo 的问题,您需要调用此 API 端点:
https://api.github.com/repos/microsoft/typescript/issues
请注意,我已将文档的 :owner
和 :repo
值替换为我正在尝试获取的文档。
然后您可以将一些参数传递给调用以过滤您的数据,例如 API 标签。
https://api.github.com/repos/microsoft/typescript/issues?labels=API
这只会 return 个标记为 API
的问题。
这是使用 API 的基础知识。
您可以使用 jQuery Ajax 访问 Github API 并添加基本身份验证 header 进行身份验证(参见 here ),下面显示了一个示例,这将提取给定回购的问题并在警报中显示前 10 个 window。
请在此处查看有关提取问题的文档:https://developer.github.com/v3/issues/ 以了解您可以使用哪些参数来过滤、排序等。
例如,您可以使用以下方法获取所有标记为 'bug' 的问题:
/issues?labels=bug
这可以包含多个标签,例如
/issues?labels=enhancement,nicetohave
您可以轻松修改以在 table 等中列出
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));
}
});
});
下面是使用 jQuery 和 Github API 的 (public) 回购问题的片段列表:
(注意我们不在此处添加身份验证 header!)
const repoPath = "leachim6/hello-world" //
$(document).ready(function() {
$.ajax({
url: `https://api.github.com/repos/${repoPath}/issues`,
type: "GET",
crossDomain: true,
success: function (response) {
tbody = "";
response.forEach(issue => {
tbody += `<tr><td>${issue.number}</td><td>${issue.title}</td><td>${issue.created_at}</td><td>${issue.state}</td></tr>`;
});
$('#output-element').html(tbody);
},
error: function (xhr, status) {
alert("error: " + JSON.stringify(xhr));
}
});
});
<head>
<meta charset="utf-8">
<title>Issue Example</title>
<link rel="stylesheet" href="css/styles.css?v=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"></script>
</head>
<body style="margin:50px;padding:25px">
<h3>Issues in Repo</h3>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Issue #</th>
<th scope="col">Title</th>
<th scope="col">Created</th>
<th scope="col">State</th>
</tr>
</thead>
<tbody id="output-element">
</tbody>
</table>
</body>