Havuz için GitHub liste sorunları sorunları kullanma


9

GitHub'a gittiğinizde, Sorunlar altında, açık olan tüm sorunları HTML sayfası olarak alır. Bir havuzdaki tüm sorunları, etiketlenmemiş, doğru etiketlenmemiş sorunlar da dahil olmak üzere gösteren bir gösterge tablosu uygulamak istiyoruz.

Bu, bir depo için ilgili API listesi listesidir .

Başlangıçta jQuery ve Javascript kullanırken, yerleşik oturum işleme, oturum açmak, GitHub kimlik doğrulaması ve geri arama yapmak ve devam etmek için aynı sayfayı kullanmama izin verdiği için şimdi bir kavram kanıtı için PHP kullanıyorum. Ama benim için önemli değil, herhangi bir dil iyi.

GitHub API'sına OAUTH2 aracılığıyla erişmeyi başardım, ancak depoların listesini aldığımda https://api.github.com/orgs/{org}/reposboş bir dizi olarak geliyor.

Çünkü /orgs/{org}/reposAPI boş bir dizi döner, tabii ki uygun /repos/{org}/{repo}/issuesAPI hata verir.

Düzenleme : Çözüm için bu takibe bakın ! Nihayet işe aldım sevindim!

Yanıtlar:


7

Bir dinlenme API'sıdır. Bir Http isteği kullanarak bazı uç noktaları çağırmanız gerekir. Hangi dili kullanmaya çalıştığınızı bilmiyorum, bu yüzden bunu nasıl başaracağınıza dair iyi bir örnek veremem. Henüz hangi dili kullanacağınızı bilmiyorsanız , github API'sına REST API çağrısı oluşturmak için postacıyı kullanın.

Microsoft'un daktilo deposundaki sorunları almak istediğinizi varsayalım , bu API bitiş noktasını çağırmanız gerekir:

https://api.github.com/repos/microsoft/typescript/issues

Burada ben almaya çalışıyorum biri için belge :ownerve :repodeğeri yerine dikkat edin .

Ardından verilerinizi filtrelemek için aramaya bazı parametreleri iletebilirsiniz, örneğin API etiketi.

https://api.github.com/repos/microsoft/typescript/issues?labels=API

Bu yalnızca olarak etiketlenmiş sorunları döndürür API.

Bu, bir API'nin nasıl kullanılacağının temelidir.


Teşekkür ederim. Bu beni yarı yolda bıraktı. Bana anlatıyor { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/issues/#list-issues-for-a-repository" }, ama okudum ve özel depolara erişmeye çalışırken görünüşte standart yanıt, bu yüzden OAuth vb. Üzerinde araştırma yapıyoruz.
Yimin Rong

Muhtemelen vardır, ama bu noktada size oauth'un nasıl çalıştığını öğretemem. Online öğretici bol var. Söylemeliyim ki, bunu yanlış anlamayın, ancak bu, API'larınızı bildiğiniz biri için oldukça büyük bir proje. Ben sadece @YiminRong
Nicolas

Teşekkür ederim. OAUTH2'yi çalıştırdım, ancak beklenen bilgileri döndürmüyor. Lütfen sayıdaki düzenlemeye bakın.
Yimin Rong

4

Github API'sına erişmek için jQuery Ajax'ı kullanabilir ve kimlik doğrulaması için temel bir kimlik doğrulama üstbilgisi ekleyebilirsiniz ( buraya bakın ), aşağıda bir örnek gösterilmiştir, bu belirli bir repo için sorunları çeker ve ilk 10'u bir uyarı penceresinde gösterir.

Sorunları çekme hakkındaki belgelere buradan bakın: https://developer.github.com/v3/issues/ filtre uygulamak, sıralamak vb. İçin hangi parametreleri kullanabileceğinizi görmek için.

Örneğin, 'bug' etiketli tüm sorunları aşağıdakileri kullanarak alabilirsiniz:

/issues?labels=bug

Bu, birden fazla etiket içerebilir, örn.

/issues?labels=enhancement,nicetohave

Bir tabloda vb. Listelemek için kolayca değiştirebilirsiniz.

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));
        }
    });
});

Aşağıda, jQuery ve Github API'sini kullanan (genel) bir repo için snippet listeleme sorunları verilmiştir:

(Buraya bir kimlik doğrulama başlığı eklemediğimizi unutmayın!)

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>


Teşekkür ederim. Bu ASAP'a bakacağım. Ben OAuth2 kullanarak beklenen sonuçları alamıyorum, ve ben bir API fark https://api.github.com/authorizationssadece temel yetki ile erişilebilir öne sürdü: stdClass Object ( [message] => This API can only be accessed with username and password Basic Auth [documentation_url] => https://developer.github.com/v3 ). Yani belki bu işe yarayacaktır.
Yimin Rong

Temel kimlik doğrulama, github kimlik bilgilerimi kullanarak benim için çalışıyor. Herkese açık bir repoya erişmek istiyorsanız, önce Gönder bölümünden yorum yapabilirsiniz!
Terry Lennox
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.