公開日:2021/11/11 最終更新日:2022/08/28

GitHubのGraphQL APIを叩いてみた

カテゴリー: GraphQL JavaScript

最近GitHubのGraphQL APIを使う機会があったので記事にしました。
この記事では生のJavaScriptでAPIを叩く方法について解説します。Reactで叩く方法は今後記事にする予定です。

async function getContributions(key, user) {
    const headers = { "Authorization": `bearer ${key}` };
    const body = {
        "query": `query {
                    user(login: "${user}") {
                        name
                        contributionsCollection {
                            contributionCalendar {
                                colors
                                totalContributions
                                weeks {
                                    contributionDays {
                                        color
                                        contributionCount
                                        date
                                        weekday
                                    }
                                    firstDay
                                }
                            }
                        }
                    }
                }`
    };
    const response = await fetch("https://api.github.com/graphql", { method: "POST", body: JSON.stringify(body), headers: headers });
    const response_json = await response.json();
    return response_json;
};

まずはgetContributionsという非同期関数を作成します。引数にはkeyとuserを指定します。keyにはAPIのキーを、userには取得したいユーザー名を入れるようにします。
APIのキーはGitHubのSettings > Developer settings > Personal access tokensから取得できます。

const headers = { "Authorization": `bearer ${key}` };

この部分ではGraphQL APIを叩く際に必要になるAPIキーの記述をします。
https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch

const body = {
        "query": `query {
                    user(login: "${user}") {
                        name
                        contributionsCollection {
                            contributionCalendar {
                                colors
                                totalContributions
                                weeks {
                                    contributionDays {
                                        color
                                        contributionCount
                                        date
                                        weekday
                                    }
                                    firstDay
                                }
                            }
                        }
                    }
                }`
    };

この部分では取得したいデータを記述します。クエリは下記のURLで検証出来ます。
https://docs.github.com/ja/graphql/overview/explorer

const response = await fetch("https://api.github.com/graphql", { method: "POST", body: JSON.stringify(body), headers: headers });
const response_json = await response.json();

この部分では先程のheadersとbodyを利用してAPIを実行し、データを取得します。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/await

return response_json;

最後に値を返して終わりです。

今回はGitHubのGraphQL APIの叩き方を紹介しました。Reactの方がAPIを実行するのが簡単なので、今後記事にしたいと思います。GraphQL楽しい。