はじめに
この記事では、GitHub CLI、curl
、または JavaScript を使用して、GitHub REST API の使用をすばやく開始する方法について説明します。 さらに詳しいガイドについては、「REST API を使用した作業の開始」を参照してください。
コマンド ラインで curl
を使用する
Note
コマンド ラインから API 要求を行う場合、GitHub では、GitHub CLI を使用することをお勧めします。これにより、認証と要求が簡略化されます。 GitHub CLI を使用して REST API の使用を開始する方法について詳しくは、この記事の GitHub CLI バージョンを参照してください。
-
curl
がまだコンピューターにインストールされていない場合は、インストールします。curl
がインストールされているかどうかを確認するには、コマンド ラインでcurl --version
を実行します。 出力がcurl
のバージョンに関する情報であれば、curl
がインストールされているということです。command not found: curl
のようなメッセージが表示された場合は、curl
をダウンロードしてインストールする必要があります。 詳しくは、curl プロジェクトのダウンロードに関するページを参照してください。 -
アクセス トークンを作成します。 たとえば、personal access token または GitHub App のユーザー アクセス トークンを作成します。 このトークンを使用して要求を認証するため、エンドポイントへのアクセスに必要なスコープまたはアクセス許可を付与する必要があります。 詳しくは、「REST API に対する認証」をご覧ください。
Warning
アクセス トークンは、パスワードと同様に扱います。
curl
ではなく GitHub CLI を使用することもできます。 認証は GitHub CLI によって自動的に処理されます。 詳しくは、このページの GitHub CLI バージョンを参照してください。これらのオプションを使用できない場合は、別の CLI サービスを使用してトークンを安全に格納することを検討してください。
-
curl
コマンドを使用して要求を行います。Authorization
ヘッダーのトークンを渡します。HOSTNAME
は お使いの GitHub Enterprise Server インスタンス の名前に置き換えます。REPO-OWNER
をリポジトリを所有するアカウントの名前に置き換えます。REPO-NAME
をリポジトリの名前に置き換えます。YOUR-TOKEN
をトークンに置き換えます。Shell curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"
curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"
Note
ほとんどの場合は、
Authorization: Bearer
またはAuthorization: token
を使用してトークンを渡すことができます。 ただし、JSON Web トークン (JWT) を渡す場合は、Authorization: Bearer
を使用する必要があります。
GitHub Actions での curl
コマンドの使用
GitHub Actions ワークフローでも curl
コマンドを使用できます。
アクセス トークンを使用した認証
GitHub では、トークンを作成するのでなく組み込みの GITHUB_TOKEN
を使用することをお勧めしています。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN
を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN
の詳細については、「自動トークン認証」を参照してください。 シークレットの詳細については、「GitHub Actions でのシークレットの使用」を参照してください。
次の例では、HOSTNAME
は お使いの GitHub Enterprise Server インスタンス の名前に置き換えます。 REPO-OWNER
をリポジトリを所有するアカウントの名前に置き換えます。 REPO-NAME
をリポジトリ所有者の名前に置き換えます。
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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer $GH_TOKEN"
GitHub App による認証
GitHub App を使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成します。
-
GitHub App の ID を構成変数として保存します。 以下の例で、
APP_ID
を構成変数の名前に置き換えます。 アプリケーションIDは、アプリケーションの設定ページで、あるいはアプリケーションのAPIを通じて確認できます。 詳しくは、「GitHub Apps用 REST API エンドポイント」をご覧ください。 構成オプションの詳細については、「変数に情報を格納する」を参照してください。 -
アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (
-----BEGIN RSA PRIVATE KEY-----
および-----END RSA PRIVATE KEY-----
を含め、ファイルの内容全体を保存します)。以下の例では、APP_PEM
をシークレットの名前に置き換えます。 詳しくは、「GitHub Apps の秘密キーの管理」をご覧ください。 シークレットの保管の詳細については、「GitHub Actions でのシークレットの使用」を参照してください。 -
トークンを生成するステップを追加し、
GITHUB_TOKEN
ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 例:YAML 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: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
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: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
次のステップ
詳しいガイドについては、「REST API の概要」を参照してください。