Github APIの処理
11795 ワード
Github APIを介してユーザのレポートを受信し、選択したレポートの問題を収集する機能を作成しました.
以下のリンクを使用して、クローンを直接使用できます.
ネクタイ
repository
次はRepositoryをロードするコードです.
await axios
.get(`https://api.github.com/users/${username}/repos`, {
headers: {
Accept: "application/vnd.github.nightshade-preview+json",
// Authorization: `Token b6b4269b1...`,
},
})
.then((el) => changeHandler(el.data));
以上のコードのchangeHandlerはpropとして受信されるハンドルである.const changeHandler = (data) => {
const repoData = JSON.stringify(data);
localStorage.setItem("repoData", repoData);
setToggle(!toggle);
};
プロセッサにデータを送信すると、repoDataの名前でローカルストレージにデータが格納されます.URLは以下の通りです.
https://api.github.com/users/$유저이름/repos
issue
次に、問題をロードするコードを示します.
// repoRegister 개수만큼 요청 후 해당 이슈만큼 map으로 뿌려줌
useEffect(() => {
// 처음 불러올때 초기화
let temp = [];
const username = localStorage.getItem("username");
const repoRegister = JSON.parse(localStorage.getItem("repoRegister"));
if (repoRegister) {
const getRepo = async () => {
for (let i = 0; i < repoRegister.length; i++) {
let url = `htts://api.github.com/repos/${username}/${repoRegister[i].name}/issues`;
await axios
.get(url, {
headers: {
Accept: "application/vnd.github.nightshade-preview+json",
},
})
.then((res) =>
res.data.forEach((el) => {
el.repo = repoRegister[i].name;
temp.push(el);
})
);
}
setLoading(!loading);
setIssue(temp);
};
getRepo();
}
}, []);
また、問題を一時的に置く案も発表された.
https://api.github.com/repos/유저이름/레포지토리이름/issues
1ページに格納されているすべてのレポートの問題を表示する必要があるため、for文を使用してレポートの数を要求します.
ヘッダの「リクエストを受け入れる」ことを忘れずに、リクエストの内容を一時的に作成した配列に追加します.
すべての重複が完了した場合は、一時的に作成したシナリオを管理中の問題シナリオに挿入します.
ロードも終わろう
setLoading(!loading);
setIssue(temp);
リファレンス
正式な書類
hyun-jii.log
Reference
この問題について(Github APIの処理), 我々は、より多くの情報をここで見つけました https://velog.io/@kusdsuna/Github-API-다루기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol