概要
Octokit は、様々な言語から GitHub API を使用するためのライブラリを提供しています。
ここでは、TypeScript (JavaScript) 用の GitHub API v3 (REST API) ライブラリである、@octokit/rest を使用する方法を紹介します。
インストール
@octokit/rest
は次のようにインストールします(npm init
で package.json
を作成済みだと想定します)。
実装(基本)
基本的には下記の API ドキュメントを参照しながら実装していくことになります。
Octokit インスタンスを生成する
このように生成した Octokit インスタンスを使って、様々な REST API を呼び出します。
リポジトリの一覧を取得する (repos.listForOrg)
API ドキュメント (Repos - Get a repository)
次の例では、組織名 sony
のパブリックなリポジトリを 5 件分取得しています。
出力結果は長いので、こちらにテキストファイル として置いておきます。
おそらく、JSON レスポンス内で実際に必要な情報は data
プロパティの配列データなので、下記のように then
コールバックのパラメータで data
配列の値を取り出すとコードがスッキリします。
指定したリポジトリの Issue 一覧を取得する (issues.listForRepo)
API ドキュメント (Issues - List repository issues)
次の例では、octokit/rest.js
リポジトリのオープン状態の Issue を 5 件分取得しています。
実装(応用)
ページネーションの自動化 (octokit.pagenate)
listXXX
系の API では、一度に最大 100 件(per_page: 100
指定時)までの情報しか取得できません。
これは、GitHub REST API の制約であり、それ以上のデータを取得するには、ページネーションの仕組みを利用して複数回に分けてリクエストを送る必要 があります。
Octokit クラスは pagenate メソッド を提供しており、連続する REST API 呼び出しを自動化してくれます。
次の例では、octokit/rest.js
リポジトリの全オープン Issue を取得しています(100件を超えていても一度に取得できます)。
Private リポジトリの情報を取得する(アクセストークン)
Private リポジトリの Issue リストなどを取得する場合は、OAuth トークンやパーソナル・アクセス・トークンを指定して GitHub API を呼び出す必要があります(権限がない場合の呼び出しは HTTP 404 エラーになります)。
例えば、パーソナル・アクセス・トークンは、GitHub の下記のユーザー設定画面から発行することができます。
トークン生成時に権限のスコープを指定する必要があるのですが、Issue リストなどを取得するのであれば、repo にチェックを入れておけばよいはずです。
取得したトークン(40文字の文字列)は、次のように Octokit
クラスのコンストラクタで渡してやります。
これで、このインスタンスを使った GitHub API 呼び出しが、トークン付きで実行されるようになります。
関連記事