গিটিহব তালিকা-ইস্যু-এ-রিপোজিটরি এপিআই ব্যবহার করে


9

ইস্যুগুলির আওতায় আপনি যখন গিটহাবে যান, তখন এটি সমস্ত উন্মুক্ত সমস্যাগুলি একটি HTML পৃষ্ঠা হিসাবে টেনে তোলে। আমরা সঠিকভাবে লেবেলযুক্ত নয় এমন সমস্ত বিষয় সহ লেবেলগুলির দ্বারা গোষ্ঠীভুক্ত সংগ্রহস্থলের সমস্ত সমস্যা দেখানো ড্যাশবোর্ড প্রয়োগ করতে চাই।

এই সংশ্লিষ্ট হয় তালিকা-সমস্যা-জন্য-একটি সংগ্রহস্থলের এপিআই

আমি প্রথমদিকে jQuery এবং জাভাস্ক্রিপ্ট ব্যবহার করার সময়, এখন একটি প্রুফ-অফ-কনসেপ্টের জন্য পিএইচপি ব্যবহার করছি কারণ এর বিল্ট-ইন সেশন হ্যান্ডলিং আমাকে লগইন করতে, গিটহাবের অনুমোদন ও কলব্যাক করতে এবং একই সাথে চালিয়ে যাওয়ার জন্য একই পৃষ্ঠাটি ব্যবহার করতে দেয়। তবে এটা আমার কাছে কিছু যায় আসে না, যে কোনও ভাষা ঠিক আছে।

আমি OAUTH2 এর মাধ্যমে গিটহাব এপিআইতে অ্যাক্সেস পেতে পরিচালিত করেছি, কিন্তু যখন আমি https://api.github.com/orgs/{org}/reposএটির মাধ্যমে সংগ্রহস্থলের তালিকা পাই তখন খালি অ্যারে হিসাবে উপস্থিত হয়।

কারণ /orgs/{org}/reposAPI একটি খালি অ্যারে প্রদান করে, অবশ্যই সংশ্লিষ্ট /repos/{org}/{repo}/issuesএপিআই ত্রুটি ফিরিয়ে দেবে।

সম্পাদনা করুন : সমাধানের জন্য এই অনুসরণটি দেখুন ! খুশি আমি অবশেষে এটি কাজ করে!

উত্তর:


7

এটি একটি বিশ্রামের এপিআই। এইচটিটিপি অনুরোধ ব্যবহার করে আপনাকে কিছু শেষ পয়েন্ট কল করতে হবে। আপনি কোন ভাষাটি ব্যবহার করার চেষ্টা করছেন তা আমি জানি না তাই এটি কীভাবে বর্ধন করা যায় সে সম্পর্কে আমি আপনাকে একটি ভাল উদাহরণ দিতে পারি না। আপনি কোন ভাষাটি এখনও ব্যবহার করবেন তা যদি না জানেন তবে গিথুব এপিআইতে REST এপিআই কল তৈরি করতে পোস্টম্যান ব্যবহার করুন ।

ধরা যাক আপনি মাইক্রোসফ্টের টাইপস্ক্রিপ্ট রেপোগুলির বিষয়গুলি পুনরুদ্ধার করতে চান , আপনাকে এই API এর শেষ পয়েন্টটি কল করতে হবে:

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

লক্ষ্য করুন এখানে আমি প্রতিস্থাপন আছে :ownerএবং :repoআমি পেতে চেষ্টা করছি ডকুমেন্টেশনের সবচেয়ে মান।

তারপরে আপনি আপনার ডেটা ফিল্টার করতে কলটিতে কিছু পরামিতিগুলি পাস করতে পারেন, উদাহরণস্বরূপ, API লেবেল।

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

এটি কেবলমাত্র সেই ইস্যুগুলি ফিরিয়ে দেবে যা হিসাবে লেবেলযুক্ত API

এটি কোনও এপিআই কীভাবে ব্যবহার করতে হয় তার মূল কথা।


ধন্যবাদ. ওটা আমাকে সেখানেই পেয়ে গেছে। এটি আমাকে বলছে { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/issues/#list-issues-for-a-repository" }, তবে আমি পড়েছি এবং প্রাইভেট রেপোগুলি অ্যাক্সেস করার চেষ্টা করার সময় এটি স্পষ্টতই স্ট্যান্ডার্ড প্রতিক্রিয়া, সুতরাং OAuth ইত্যাদির উপর গবেষণা করে FWIW, jQuery কাঠামোর আওতায় জাভাস্ক্রিপ্ট ব্যবহার করে।
ইয়িমিন রং

সম্ভবত আছে, তবে এই মুহুর্তে, আমি আপনাকে শিখতে পারি না যে ওউথ কীভাবে কাজ করে। অনলাইনে প্রচুর টিউটোরিয়াল রয়েছে। আমার অবশ্যই বলতে হবে, এটিকে ভুল উপায়ে গ্রহণ করবেন না, তবে আপনার APIs সম্পর্কিত জ্ঞানের কারও পক্ষে এটি বেশ বড় প্রকল্প। আমি কেবল নিশ্চিত করতে চাই যে আপনি কী জানেন যে আপনি যিমিনরং
নিকোলাস

ধন্যবাদ. আমি কাজ করতে OAUTH2 পেয়েছি, কিন্তু এটি প্রত্যাশিত তথ্য ফেরত পাবে না। ইস্যুতে সম্পাদনা দেখুন।
Yimin Rong

4

আপনি গিথুব এপিআই অ্যাক্সেস করতে jQuery অ্যাজাক্স ব্যবহার করতে পারেন এবং প্রমাণীকরণের জন্য একটি মৌলিক প্রমাণীকরণ শিরোনাম যুক্ত করতে পারেন ( এখানে দেখুন ), উদাহরণ নীচে দেখানো হয়েছে, এটি প্রদত্ত রেপোগুলির জন্য সমস্যাগুলি টানবে এবং একটি সতর্কতা উইন্ডোতে প্রথম 10 দেখায়।

সমস্যাগুলি টানতে এখানে ডকুমেন্টেশন দেখুন: আপনি কোন প্যারামিটারগুলি ফিল্টার করতে বাছাই করতে পারেন তা দেখার জন্য https://developer.github.com/v3/issues/

উদাহরণস্বরূপ আপনি ব্যবহার করে 'বাগ' লেবেলযুক্ত সমস্ত সমস্যা পেতে পারেন:

/issues?labels=bug

এর মধ্যে একাধিক লেবেল অন্তর্ভুক্ত থাকতে পারে eg

/issues?labels=enhancement,nicetohave

আপনি সহজেই কোনও টেবিলের তালিকাতে তালিকা পরিবর্তন করতে পারেন etc.

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 এবং গিথুব এপিআই ব্যবহার করে একটি (সর্বজনীন) রেপোর জন্য স্নিপেট লিস্টিংয়ের সমস্যা রয়েছে:

(নোট আমরা এখানে একটি প্রমাণীকরণ শিরোনাম যোগ না!)

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>


ধন্যবাদ. আমি এই ASAP তাকান। আমি OAuth2 ব্যবহার প্রত্যাশিত ফলাফল হচ্ছিনা, এবং আমি এক এপিআই খেয়াল https://api.github.com/authorizationsবোঝা যায় যে এটি শুধুমাত্র মৌলিক অনুমোদন অ্যাক্সেস করা যেতে পারে: stdClass Object ( [message] => This API can only be accessed with username and password Basic Auth [documentation_url] => https://developer.github.com/v3 )। সুতরাং সম্ভবত এটি কাজ করবে।
ইয়িমিন রং

বুদ্ধিমান প্রমাণীকরণ আমার গিথুব শংসাপত্রগুলি ব্যবহার করে আমার পক্ষে কাজ করে। আপনি যদি কোনও পাবলিক রেপো অ্যাক্সেস করতে চান তবে আপনি আগে বিক্রয় বিভাগটি মন্তব্য করতে পারেন!
টেরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.