この記事では、GitHub CLI、JavaScript、または curl
を使用して、GitHub REST API の使用をすばやく開始する方法について説明します。 さらに詳しいガイドについては、「REST API を使用した作業の開始」をご覧ください。
GitHub CLI を使用した作業の開始
コマンド ラインでの GitHub CLI の使用
GitHub CLI は、コマンド ラインから GitHub REST API を使用する方法として最も簡単です。
注: 以下の例は GitHub.com を対象としています。 GitHub AE を使用して例を試す場合は、octocat/Spoon-Knife
を GitHub AE に置き換える必要があります。 または、GitHub AE ではなく、gh auth login
コマンドを再実行して GitHub.com に対して認証します。
-
GitHub CLI をまだインストールしていない場合は、インストールしてください。 インストールの手順については、GitHub CLI リポジトリを参照してください。
-
auth login
サブコマンドを使用して、GitHub CLI に対する認証を行います。 詳しくは、GitHub CLIauth login
のドキュメントを参照してください。gh auth login
-
api
サブコマンドを使用して API 要求を行います。 詳しくは、GitHub CLIapi
のドキュメントを参照してください。gh api repos/octocat/Spoon-Knife/issues
GitHub Actions での GitHub CLI の使用
GitHub Actions ワークフローでは、GitHub CLI を使用することもできます。 詳しくは、「ワークフローで GitHub CLI を使用する」を参照してください。
gh auth login
コマンドを使用するのでなく、アクセス トークンを GH_TOKEN
という環境変数として渡します。 GitHub では、トークンを作成するのでなく組み込みの GITHUB_TOKEN
を使用することをお勧めしています。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN
を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN
について詳しくは、「自動トークン認証」をご覧ください。 シークレットについて詳しくは、「GitHub Actions でのシークレットの使用」をご覧ください。
注: 以下の例のワークフローは GitHub.com を対象としています。 GitHub AE を使用して例を試す場合は、octocat/Spoon-Knife
を GitHub AE のリポジトリに置き換える必要があります。
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api repos/octocat/Spoon-Knife/issues
GitHub App を使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成します。
-
GitHub App の ID をシークレットとして保存します。 以下の例では、
APP_ID
をシークレットの名前に置き換えます。 アプリ ID は、アプリの設定ページで、あるいは API を通じて確認できます。 詳しくは、REST API ドキュメントの「GitHub アプリ」をご覧ください。 シークレットについて詳しくは、「GitHub Actions でのシークレットの使用」をご覧ください。 -
アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (
-----BEGIN RSA PRIVATE KEY-----
および-----END RSA PRIVATE KEY-----
を含め、ファイルの内容全体を保存します)。以下の例では、APP_PEM
をシークレットの名前に置き換えます。 詳しくは、「GitHub Apps の秘密キーの管理」を参照してください。 -
トークンを生成するステップを追加し、
GITHUB_TOKEN
ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 次に例を示します。on: workflow_dispatch: jobs: track_pr: runs-on: ubuntu-latest steps: - name: Generate token id: generate_token uses: actions/create-github-app-token@v1 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate_token.outputs.token }} run: | gh api repos/octocat/Spoon-Knife/issues
JavaScript の使用を開始する
Octokit.js を使用すれば、JavaScript スクリプト内で GitHub REST API とやりとりすることができます。 詳しくは、「REST API と JavaScript を使用したスクリプト」をご覧ください。
Octokit.js の使用
注: 以下の例は GitHub.com を対象としています。 GitHub AE を使用して例を試す場合は、octocat/Spoon-Knife
を GitHub AE に置き換える必要があります。 または、baseURL
を指定せずに、新しい Octokit
インスタンスを作成することもできます。
-
アクセス トークンを作成します。 たとえば、personal access token または GitHub App のユーザー アクセス トークンを作成します。 詳しい情報については、「personal access token の作成」か「GitHub App のユーザーの特定と認可」を参照してください。
警告: アクセス トークンは、パスワードと同様の扱いとしてください。
トークンを安全な状態に保つには、ご利用のトークンをシークレットとして格納し、GitHub Actions を介してスクリプトを実行します。 詳しくは、「GitHub Actions での Octokit.js の使用」セクションを参照してください。
これらのオプションを使用できない場合は、別の CLI サービスを使用してトークンを安全に格納することを検討してください。
-
octokit
をインストールする。 たとえば、「npm install octokit
」のように入力します。octokit
をインストールまたは読み込むための他の方法については、Octokit.js の README を参照してください。 -
スクリプトで
octokit
をインポートします。 たとえば、「import { Octokit } from "octokit";
」のように入力します。 その他のoctokit
のインポート方法については、Octokit.js の README を参照してください。 -
実際のトークンを指定して
Octokit
のインスタンスを作成します。YOUR-TOKEN
を実際のトークンに置き換えます。const octokit = new Octokit({ auth: 'YOUR-TOKEN' });
-
octokit.request
を使用して、要求を実行します。 HTTP メソッドとパスを最初の引数として送信します。 オブジェクト内のパス、クエリ、および本文のパラメーターを 2 番目の引数として指定します。 たとえば、次の要求では、HTTP メソッドはGET
、パスは/repos/{owner}/{repo}/issues
、パラメーターはowner: "octocat"
およびrepo: "Spoon-Knife"
となっています。await octokit.request("GET /repos/{owner}/{repo}/issues", { owner: "octocat", repo: "Spoon-Knife", });
GitHub Actions での Octokit.js の使用
また、GitHub Actions ワークフローで JavaScript スクリプトを実行することもできます。 詳しくは、「GitHub Actions のワークフロー構文」を参照してください。
GitHub では、トークンを作成するのでなく組み込みの GITHUB_TOKEN
を使用することをお勧めしています。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN
を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN
について詳しくは、「自動トークン認証」をご覧ください。 シークレットについて詳しくは、「GitHub Actions でのシークレットの使用」をご覧ください。
注: 以下の例は GitHub.com を対象としています。 GitHub AE を使用して例を試す場合は、octocat/Spoon-Knife
を GitHub AE に置き換える必要があります。 または、baseURL
を指定せずに、新しい Octokit
インスタンスを作成することもできます。
次のワークフロー例を参照してください。
- リポジトリのコンテンツをチェックアウトする
- Node.js を設定する
octokit
をインストールするGITHUB_TOKEN
の値を、TOKEN
と呼ばれる環境変数として格納し、.github/actions-scripts/use-the-api.mjs
を実行する。これにより、その環境変数にprocess.env.TOKEN
としてアクセスできます。
ワークフローの例:
on:
workflow_dispatch:
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- name: Check out repo content
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '16.17.0'
cache: npm
- name: Install dependencies
run: npm install octokit
- name: Run script
run: |
node .github/actions-scripts/use-the-api.mjs
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
ファイル パス .github/actions-scripts/use-the-api.mjs
を含む JavaScript スクリプトの例:
import { Octokit } from "octokit"
const octokit = new Octokit({
auth: process.env.TOKEN
});
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
});
const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})
console.log(titleAndAuthor)
} catch (error) {
console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}
GitHub App を使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成します。
-
GitHub App の ID をシークレットとして保存します。 以下の例では、
APP_ID
をシークレットの名前に置き換えます。 アプリケーションIDは、アプリケーションの設定ページで、あるいはアプリケーションのAPIを通じて確認できます。 詳しくは、「GitHub アプリ」を参照してください。 シークレットについて詳しくは、「GitHub Actions でのシークレットの使用」をご覧ください。 -
アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (
-----BEGIN RSA PRIVATE KEY-----
および-----END RSA PRIVATE KEY-----
を含め、ファイルの内容全体を保存します)。以下の例では、APP_PEM
をシークレットの名前に置き換えます。 詳しくは、「GitHub Apps の秘密キーの管理」を参照してください。 -
トークンを生成するステップを追加し、
GITHUB_TOKEN
ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 次に例を示します。on: workflow_dispatch: jobs: use_api_via_script: runs-on: ubuntu-latest steps: - name: Check out repo content uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: '16.17.0' cache: npm - name: Install dependencies run: npm install octokit - name: Generate token id: generate_token uses: actions/create-github-app-token@v1 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Run script run: | node .github/actions-scripts/use-the-api.mjs env: TOKEN: ${{ steps.generate_token.outputs.token }}
curl
の使用を開始する
コマンド ラインで curl
を使用する
注:
- 以下の例は GitHub.com を対象としています。 GitHub AE を使用して例を試す場合は、
https://api.github.com
をhttps://HOSTNAME/api/v3
に置き換え、HOSTNAME
を GitHub AE のホスト名に置き換える必要があります。octocat/Spoon-Knife
を GitHub AE のリポジトリに置き換える必要もあります。 - コマンド ラインから API 要求を行う場合、GitHub では、GitHub CLI を使用することをお勧めします。これにより、認証と要求が簡略化されます。 GitHub CLI を使用して REST API の使用を開始する方法について詳しくは、この記事の GitHub CLI バージョンを参照してください。
-
curl
がまだコンピューターにインストールされていない場合は、インストールします。curl
がインストールされているかどうかを確認するには、コマンド ラインでcurl --version
を実行します。 出力がcurl
のバージョンに関する情報であれば、インストールされています。command not found: curl
のようなメッセージが表示された場合は、curl
をダウンロードしてインストールする必要があります。 詳しくは、curl プロジェクトのダウンロードに関するページを参照してください。 -
アクセス トークンを作成します。 たとえば、personal access token または GitHub App のユーザー アクセス トークンを作成します。 詳しい情報については、「personal access token の作成」か「GitHub App のユーザーの特定と認可」を参照してください。
警告: アクセス トークンは、パスワードと同様の扱いとしてください。
curl
ではなく GitHub CLI を使用することもできます。 認証は GitHub CLI によって自動的に処理されます。 詳しくは、このページの GitHub CLI バージョンを参照してください。これらのオプションを使用できない場合は、別の CLI サービスを使用してトークンを安全に格納することを検討してください。
-
curl
コマンドを使用して要求を行います。Authorization
ヘッダーにトークンを渡します。YOUR-TOKEN
を実際のトークンに置き換えます。curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"
注: ほとんどの場合は、
Authorization: Bearer
またはAuthorization: token
を使用してトークンを渡すことができます。 ただし、JSON Web トークン (JWT) を渡す場合は、Authorization: Bearer
を使用する必要があります。
GitHub Actions での curl
コマンドの使用
GitHub Actions ワークフローでも curl
コマンドを使用できます。
GitHub では、トークンを作成するのでなく組み込みの GITHUB_TOKEN
を使用することをお勧めしています。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN
を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN
について詳しくは、「自動トークン認証」をご覧ください。 シークレットについて詳しくは、「GitHub Actions でのシークレットの使用」をご覧ください。
注: 以下の例のワークフローは GitHub.com を対象としています。 GitHub AE を使用して例を試す場合は、次の違いに注意してください。
https://api.github.com
をhttps://HOSTNAME/api/v3
に置き換え、HOSTNAME
を GitHub AE のホスト名に置き換える必要があります。octocat/Spoon-Knife
を GitHub AE のリポジトリに置き換える必要があります。
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer $GH_TOKEN"
GitHub App を使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成します。
-
GitHub App の ID をシークレットとして保存します。 以下の例では、
APP_ID
をシークレットの名前に置き換えます。 アプリケーションIDは、アプリケーションの設定ページで、あるいはアプリケーションのAPIを通じて確認できます。 詳しくは、「GitHub アプリ」を参照してください。 シークレットについて詳しくは、「GitHub Actions でのシークレットの使用」をご覧ください。 -
アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (
-----BEGIN RSA PRIVATE KEY-----
および-----END RSA PRIVATE KEY-----
を含め、ファイルの内容全体を保存します)。以下の例では、APP_PEM
をシークレットの名前に置き換えます。 詳しくは、「GitHub Apps の秘密キーの管理」を参照してください。 -
トークンを生成するステップを追加し、
GITHUB_TOKEN
ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 次に例を示します。on: workflow_dispatch: jobs: use_api: runs-on: ubuntu-latest steps: - name: Generate token id: generate_token uses: actions/create-github-app-token@v1 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate_token.outputs.token }} run: | curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
次の手順
詳しいガイドについては、「REST API を使用した作業の開始」をご覧ください。