GitHub REST API について
この記事では、GitHub CLI、JavaScript、または cURL を使う GitHub REST API の使用方法について説明します。 クイックスタート ガイドについては、「GitHub REST API のクイックスタート」を参照してく� さい。
REST API への要求を行うときは、HTTP メソッドとパスを指定します。 さらに、要求ヘッダーとパス、クエリ、または本文のパラメーターを指定することもできます。 API では、応答状態コードと応答ヘッダー、また� �合によっては応答本文が返されます。
REST API リファレンス ドキュメントでは、すべての操作の HTTP メソッド、パス、およびパラメーターについて説明します。 また、各操作の要求と応答の例も表示されます。 詳しくは、REST のリファレンス ドキュメントをご覧く� さい。
GitHub の API について詳しくは、「GitHub の API について」を参照してく� さい。
要求を行う
要求を行うには、まず HTTP メソッドと、使用する操作のパスを見つけます。 たとえば、"Octocat の取得" 操作では、GET
メソッドと /octocat
パスが使用されます。 この操作の完全なリファレンス ドキュメントについては、「Octocat の取得」を参照してく� さい。
注: GitHub CLI の例のコマンドを使用するには、GitHub CLI をインストールする必要があります。 インストールの手� �については、GitHub CLI リポジトリを参照してく� さい。
ま� GitHub CLI に対して認証されていない� �合は、要求を行う前に gh auth login
サブコマンドを使用して認証する必要があります。 詳しくは、「認証」を参照してく� さい。
GitHub CLI を使用して要求を行うには、パスと共に api
サブコマンドを使用します。 メソッドを指定するには、--method
または -X
フラグを使用します。
gh api /octocat --method GET
注: JavaScript の例で使用されている Octokit.js ライブラリを使うには、octokit
をインストールしてインポートする必要があります。 詳しくは、Octokit.js の README を参照してく� さい。
JavaScript を使用して要求を行うために、Octokit.js を使用できます。 詳しくは、Octokit.js の README を参照してく� さい。
まず、Octokit
のインスタンスを作成します。ベース URL を http(s)://HOSTNAME/api/v3
に設定します。 [hostname]
を your GitHub Enterprise Server instanceの名前に置き換えます。
const octokit = new Octokit({
baseUrl: "http(s)://HOSTNAME/api/v3",
});
その後、request
メソッドを使用して要求を行います。 HTTP メソッドとパスを最初の引数として渡します。
await octokit.request("GET /octocat", {});
パスの前に GitHub REST API のベース URL http(s)://HOSTNAME/api/v3
を付� し、完全な URL (http(s)://HOSTNAME/api/v3/octocat
) を取得します。[hostname]
は、your GitHub Enterprise Server instance の名前に置き換えます。
コマンド ラインで curl
コマンドを使用します。 --request
または -X
フラグを使用し、その後に HTTP メソッドを指定します。 --url
フラグを使用し、その後に完全な URL を指定します。
curl --request GET \
--url "https://api.github.com/octocat"
注: "コマンドが見つかりません: curl" のようなメッセージが表示される� �合は、cURL をダウンロードしてインストールする必要があることがあります。 詳しくは、cURL プロジェクトのダウンロード ページを参照してく� さい。
認証、パラメーターの送信、応答の使用方法について学習する� �合は、引き続きお読みく� さい。
認証
多くの操作では、認証が必要であるか、認証されている� �合は追� 情� �が返されます。 また、認証されると、1 時間あたりにさらに多くの要求を行うことができます。
api
サブコマンドを使用するには、GitHub CLI に対して認証を行う必要があります。トークンについて
トークンを追� することで、要求を認証できます。
個人用に GitHub REST API を使用する� �合は、personal access tokenを作成できます。 この記事で使用する REST API 操作には、personal access tokens。 その他の操作には、異なるスコープ。 personal access tokenの作成について詳しくは、「personal access tokenの作成」をご覧く� さい。
Organization または他のユーザーの代わりに API を使用する� �合、GitHub では、GitHub App の使用が推奨されます。 操作が GitHub Apps で使用できる� �合、その操作の REST リファレンス ドキュメントには "GitHub Apps で動作する" と示されます。 この記事で使用される REST API 操作には、GitHub Apps の issues
の読み取りおよび書き込みアクセス許可が必要です。 その他の操作では、異なるアクセス許可が必要な� �合があります。 詳しくは、「GitHub App を作成する」、「GitHub Apps による認証」、「GitHub アプリのユーザーを特定および認可する」を参照してく� さい。
GitHub Actions ワークフローで API を使用する� �合、GitHub では、トークンを作成するのではなく、組み込み GITHUB_TOKEN
で認証することが推奨されます。 permissions
キーを使用して、GITHUB_TOKEN
へのアクセス許可を付与できます。 詳しくは、「自動トークン認証」を参照してく� さい。
認証の例
GitHub CLI では、アクセス トークンを事前に作成する必要はありません。 auth login
サブコマンドを使用して、GitHub CLI に対する認証を行います。
gh auth login
--scopes
フラグを使用して、必要なスコープを指定できます。 作成したトークンで認証する� �合は、--with-token
フラグを使用できます。 詳しくは、GitHub CLI auth login
ドキュメントを参照してく� さい。
警告: アクセス トークンは、パスワードと同様の扱いとしてく� さい。
トークンを安全な状態に保つために、トークンをシークレットとして� �納し、GitHub Actions を使用してスクリプトを実行できます。 詳細については、「暗号化されたシークレット」を参照してく� さい。
これらのオプションが使用できない� �合は、1Password CLI などの別のサービスを使用してトークンを安全に� �納することを検討してく� さい。
Octokit.js ライブラリで認証するには、Octokit
のインスタンスの作成時にトークンを渡すことができます。 YOUR-TOKEN
をお使いのトークンに置き換えます。[hostname]
をお使いの your GitHub Enterprise Server instanceの名前に置き換えます。
const octokit = new Octokit({
baseUrl: "http(s)://HOSTNAME/api/v3",
auth: 'YOUR-TOKEN',
});
警告: アクセス トークンはパスワードと同様に扱ってく� さい。
アカウントを安全な状態に保てるように、cURL の代わりに GitHub CLI を使用できます。 GitHub CLI で自動的に認証が行われます。 詳しくは、このページの GitHub CLI バージョンを参照してく� さい。
これらのオプションが使用できない� �合は、1Password CLI などの別のサービスを使用してトークンを安全に� �納することを検討してく� さい。
cURL では、トークンを含む Authorization
ヘッダーを送信します。 YOUR-TOKEN
は実際のトークンに置き換えてく� さい。
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Authorization: Bearer YOUR-TOKEN"
注: ほとんどの� �合は、Authorization: Bearer
または Authorization: token
を使用してトークンを渡すことができます。 た� し、JSON Web トークン (JWT) を渡す� �合は、Authorization: Bearer
を使用する必要があります。
GitHub Actions の認証例
run
キーワードを使用して、GitHub Actions ワークフローで GitHub CLI コマンドを実行することもできます。 詳細については、「GitHub Actions のワークフロー構文」を参照してく� さい。
gh auth login
コマンドを使用するのでなく、トークンを GH_TOKEN
という環境変数として渡します。 GitHub では、トークンを作成するのではなく、組み込みの GITHUB_TOKEN
で認証することが推奨されます。 これができない� �合は、ご利用のトークンをシークレットとして� �納し、次の例で GITHUB_TOKEN
を自分のシークレットの名前に置き換えます。 GITHUB_TOKEN
について詳しくは、「自動トークン認証」を参照してく� さい。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してく� さい。
jobs:
use_api:
runs-on: ubuntu-latest
permissions: {}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api /octocat
run
キーワードを使用して、GitHub Actions ワークフローで JavaScript スクリプトを実行することもできます。 詳細については、「GitHub Actions のワークフロー構文」を参照してく� さい。
GitHub では、トークンを作成するのではなく、組み込みの GITHUB_TOKEN
で認証することが推奨されます。 これができない� �合は、ご利用のトークンをシークレットとして� �納し、次の例で GITHUB_TOKEN
を自分のシークレットの名前に置き換えます。 GITHUB_TOKEN
について詳しくは、「自動トークン認証」を参照してく� さい。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してく� さい。
次のワークフロー例を参照してく� さい。
- リポジトリのコンテンツをチェックアウトする
- 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: {}
steps:
- name: Check out repo content
uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: '16.17.0'
cache: npm
- name: Install dependencies
run: npm install octokit
- name: Run script
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
node .github/actions-scripts/use-the-api.mjs
ファイル パス .github/actions-scripts/use-the-api.mjs
を含む JavaScript スクリプトの例:
import { Octokit } from "octokit";
const octokit = new Octokit({
baseUrl: "http(s)://HOSTNAME/api/v3",
auth: process.env.TOKEN,
});
await octokit.request("GET /octocat", {});
スクリプトを別のファイルに� �納し、ワークフローからスクリプトを実行するのではなく、actions/github-script
アクションを使用してスクリプトを実行できます。 詳しくは、actions/github-script README をご覧く� さい。
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions: {}
steps:
- uses: actions/github-script@v5
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.request('GET /octocat', {})
run
キーワードを使用して、GitHub Actions ワークフローで cURL コマンドを実行することもできます。 詳細については、「GitHub Actions のワークフロー構文」を参照してく� さい。
GitHub では、トークンを作成するのではなく、組み込みの GITHUB_TOKEN
で認証することが推奨されます。 これができない� �合は、ご利用のトークンをシークレットとして� �納し、次の例で GITHUB_TOKEN
を自分のシークレットの名前に置き換えます。 GITHUB_TOKEN
について詳しくは、「自動トークン認証」を参照してく� さい。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してく� さい。
jobs:
use_api:
runs-on: ubuntu-latest
permissions: {}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Authorization: Bearer $GH_TOKEN"
ヘッダーの使用
ほとんどの操作では、値が application/vnd.github+json
の Accept
ヘッダーを渡す必要があることを指定します。 他の操作では、別の Accept
ヘッダーまたは追� のヘッダーを送信する必要があることを指定する� �合があります。
GitHub CLI でヘッダーを送信するには、--header
または -H
フラグを使用し、その後にヘッダーを key: value
形式で指定します。
gh api --header 'Accept: application/vnd.github+json' --method GET /octocat
Octokit.js ライブラリでは自動的に Accept: application/vnd.github+json
ヘッダーが渡されます。 追� のヘッダーまたは別の Accept
ヘッダーを渡すには、headers
メソッドに 2 番目の引数として渡されるオブジェクトに request
プロパティを追� します。 headers
プロパティの値は、キーがヘッダー名で値がヘッダー値のオブジェクトです。 たとえば、値が text/plain
の content-type
ヘッダーを送信する� �合は次のようになります。
await octokit.request("GET /octocat", {
headers: {
"content-type": "text/plain",
},
});
cURL でヘッダーを送信するには、--header
または -H
フラグを使用し、その後にヘッダーを key: value
形式で指定します。
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
パス パラメーターの使用
パス パラメーターでは操作パスを変更します。 たとえば、"リポジトリの issue の一覧表示" パスは /repos/{owner}/{repo}/issues
となります。 中かっこ {}
は、指定する必要があるパス パラメーターを示します。 この� �合は、リポジトリの所有者と名前を指定する必要があります。 この操作のリファレンス ドキュメントについては、「リポジトリの issue の一覧表示」を参照してく� さい。
注: このコマンドを your GitHub Enterprise Server instanceで動作させるには、octocat/Spoon-Knife
を、your GitHub Enterprise Server instanceによって所有されているリポジトリに置き換えます。 それ以外の� �合は、gh auth login
コマンドを再実行して、your GitHub Enterprise Server instanceではなく GitHub.com に対して認証を行います。
octocat/Spoon-Knife
リポジトリから issue を取得するには、{owner}
を octocat
に、{repo}
を Spoon-Knife
に置き換えます。
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues
注: この例を your GitHub Enterprise Server instanceで動作させるには、octocat/Spoon-Knife
を、your GitHub Enterprise Server instance によって所有されているリポジトリに置き換えます。 それ以外の� �合は、新しい Octokit
インスタンスを作成、baseURL
は指定しません。
Octokit.js で要求を行うと、パス パラメーターを含むすべてのパラメーターが、request
メソッドの 2 番目の引数としてオブジェクトで渡されます。 octocat/Spoon-Knife
リポジトリから issue を取得するには、owner
を octocat
として、repo
を Spoon-Knife
として指定します。
await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife"
});
octocat/Spoon-Knife
リポジトリから issue を取得するには、{owner}
を octocat
に、{repo}
を Spoon-Knife
に置き換えます。 完全なパスを構築するには、GitHub REST API のベース URL https://api.github.com
を先� �に付� します (https://api.github.com/repos/octocat/Spoon-Knife/issues
)。
注: GitHub.com の代わりに your GitHub Enterprise Server instance を使用する� �合は、https://api.github.com
の代わりに http(s)://HOSTNAME/api/v3
に使用し、[hostname]
を your GitHub Enterprise Server instanceの名前に置き換えます。 octocat/Spoon-Knife
を、your GitHub Enterprise Server instanceによって所有されているリポジトリに置き換えます。
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
この操作では、issue のリストと各 issue に関するデータが返されます。 応答の使用について詳しくは、「応答の使用」セクションを参照してく� さい。
クエリ パラメーターの使用
クエリ パラメーターを使用すると、要求に対して返されるデータを制御できます。 たとえば、クエリ パラメーターを使用すると、応答のページ分割時に返される� �目の数を指定できます。
既定では、"リポジトリの issue の一覧表示" 操作で 30 個の issue が返され、作成日の降� �で並べ替えられます。 per_page
パラメーターを使用すると、30 個ではなく 2 個の issue を返すことができます。 sort
パラメーターを使用すると、作成日ではなく、最終更新日で issue を並べ替えることができます。 direction
パラメーターを使用すると、降� �ではなく昇� �で結果を並べ替えることができます。
GitHub CLI の� �合は、-F
フラグを使用して、数値、ブール値、または null 値のパラメーターを渡します。 文字列パラメーターを渡すには、-f
を使用します。
注: GitHub CLI では現在、配列のパラメーターは受け入れられていません。 詳しくは、こちらの issue を参照してく� さい。
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 -f sort=updated -f direction=asc
Octokit.js で要求を行うと、クエリ パラメーターを含むすべてのパラメーターが、request
メソッドの 2 番目の引数としてオブジェクトで渡されます。
await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
sort: "updated",
direction: "asc",
});
cURL の� �合は、パスの末尾に ?
を追� してから、クエリ パラメーターの名前と値を parameter_name=value
形式で付� します。 複数のクエリ パラメーターは &
で区切ります。
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2&sort=updated&direction=asc" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
この操作では、issue のリストと各 issue に関するデータが返されます。 応答の使用について詳しくは、「応答の使用」セクションを参照してく� さい。
本文パラメーターの使用
本文パラメーターを使用すると、API に追� のデータを渡すことができます。 たとえば、"issue の作成" 操作では、新しい issue のタイトルを指定する必要があります。 また、issue 本文に配置するテキストなど、他の情� �を指定することもできます。 この操作の完全なリファレンス ドキュメントについては、「issue の作成」を参照してく� さい。
"issue の作成" 操作では、上記の例の "リポジトリの issue の一覧表示" 操作と同じパスが使用されますが、GET
メソッドではなく POST
メソッドが使用されます。
GitHub CLI の� �合は、-F
フラグを使用して、数値、ブール値、または null 値のパラメーターを渡します。 文字列パラメーターを渡すには、-f
を使用します。
注: GitHub CLI では現在、配列のパラメーターは受け入れられていません。 詳しくは、こちらの issue を参照してく� さい。
gh api --header 'Accept: application/vnd.github+json' --method POST /repos/octocat/Spoon-Knife/issues -f title="Created with the REST API" -f body="This is a test issue created by the REST API"
Octokit.js で要求を行うと、本文パラメーターを含むすべてのパラメーターが、request
メソッドの 2 番目の引数としてオブジェクトで渡されます。
await octokit.request("POST /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
title: "Created with the REST API",
body: "This is a test issue created by the REST API",
});
cURL の� �合は、--data
フラグを使用して JSON オブジェクトで本文パラメーターを渡します。
curl --request POST \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" \
--data '{
"title": "Created with the REST API",
"body": "This is a test issue created by the REST API"
}'
この操作によって issue が作成され、新しい issue に関するデータが返されます。 応答で、issue の html_url
を見つけ、ブラウザーでその issue に移動します。 応答の使用について詳しくは、「応答の使用」セクションを参照してく� さい。
応答の使用
応答コードとヘッダーについて
すべての要求で、応答の成功を示す HTTP 状態コードが返されます。 応答コードについて詳しくは、MDN HTTP 応答状態コードに関するドキュメントを参照してく� さい。
さらに、応答には、応答の詳細を示すヘッダーが含まれます。 X-
または x-
で始まるものは、GitHub のカスタ� ヘッダーです。 たとえば、x-ratelimit-remaining
と x-ratelimit-reset
ヘッダーは、一定期間に行うことができる要求の数を示します。
状態コードとヘッダーを表示するには、要求を送信するときに --include
または --i
フラグを使用します。
たとえば、次の要求があります。
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 --include
次のような応答コードとヘッダーが返されます。
HTTP/2.0 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
Cache-Control: private, max-age=60, s-maxage=60
Content-Security-Policy: default-src 'none'
Content-Type: application/json; charset=utf-8
Date: Thu, 04 Aug 2022 19:56:41 GMT
Etag: W/"a63dfbcfdb73621e9d2e89551edcf9856731ced534bd7f1e114a5da1f5f73418"
Link: ; rel="next", ; rel="last"
Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
Server: GitHub.com
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Vary: Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding, Accept, X-Requested-With
X-Accepted-Oauth-Scopes: repo
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-Github-Api-Version-Selected: 2022-08-09
X-Github-Media-Type: github.v3; format=json
X-Github-Request-Id: 1C73:26D4:E2E500:1EF78F4:62EC2479
X-Oauth-Client-Id: 178c6fc778ccc68e1d6a
X-Oauth-Scopes: gist, read:org, repo, workflow
X-Ratelimit-Limit: 15000
X-Ratelimit-Remaining: 14996
X-Ratelimit-Reset: 1659645499
X-Ratelimit-Resource: core
X-Ratelimit-Used: 4
X-Xss-Protection: 0
この例では、応答コードは 200
で、要求が成功したことを示します。
Octokit.js で要求を行うと、request
メソッドでは promise が返されます。 要求が成功した� �合、promise は、応答のHTTP 状態コード (status
) と応答ヘッダー (headers
) を含むオブジェクトに解決されます。 エラーが発生した� �合、promise は、応答のHTTP 状態コード (status
) と応答ヘッダー (response.headers
) を含むオブジェクトに解決されます。
try/catch
ブロックを使用して、エラーが発生した� �合にそれをキャッチできます。 たとえば、次のスクリプトの要求が成功した� �合、そのスクリプトでは状態コードと x-ratelimit-remaining
ヘッダーの値がログに記録されます。 要求が成功しなかった� �合、スクリプトでは状態コード、x-ratelimit-remaining
ヘッダーの値、およびエラー メッセージがログに記録されます。
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
});
console.log(`Success! Status: ${result.status}. Rate limit remaining: ${result.headers["x-ratelimit-remaining"]}`)
} catch (error) {
console.log(`Error! Status: ${error.status}. Rate limit remaining: ${error.headers["x-ratelimit-remaining"]}. Message: ${error.response.data.message}`)
}
状態コードとヘッダーを表示するには、要求を送信するときに --include
または --i
フラグを使用します。
たとえば、次の要求があります。
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" \
--include
次のような応答コードとヘッダーが返されます。
HTTP/2 200
server: GitHub.com
date: Thu, 04 Aug 2022 20:07:51 GMT
content-type: application/json; charset=utf-8
cache-control: public, max-age=60, s-maxage=60
vary: Accept, Accept-Encoding, Accept, X-Requested-With
etag: W/"7fceb7e8c958d3ec4d02524b042578dcc7b282192e6c939070f4a70390962e18"
x-github-media-type: github.v3; format=json
link: ; rel="next", ; rel="last"
access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
access-control-allow-origin: *
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin
content-security-policy: default-src 'none'
x-ratelimit-limit: 15000
x-ratelimit-remaining: 14996
x-ratelimit-reset: 1659645535
x-ratelimit-resource: core
x-ratelimit-used: 4
accept-ranges: bytes
content-length: 4936
x-github-request-id: 14E0:4BC6:F1B8BA:208E317:62EC2715
この例では、応答コードは 200
で、要求が成功したことを示します。
応答本文について
多くの操作で応答本文が返されます。 特に指定しない限り、応答本文は JSON 形式となります。 たとえば、この要求では、各 issue に関するデータと共に issue のリストが返されます。
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2
await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
});
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN"
必要な情� �を指定する GraphQL API とは異なり、REST API では通常、必要以上の情� �が返されます。 必要に応じて、応答を解析して特定の情� �を引き出すことができます。
たとえば、>
を使用して、応答をファイルにリダイレクトできます。
gh api --header 'Accept: application/vnd.github+json' --method GET /repos/octocat/Spoon-Knife/issues -F per_page=2 > data.json
その後、jq を使用して、各 issue のタイトルと作成者 ID を取得できます。
jq '.[] | {title: .title, authorID: .user.id}' data.json
前の 2 つのコマンドでは次のようなものが返されます。
{
"title": "Update index.html",
"authorID": 10701255
}
{
"title": "Edit index file",
"authorID": 53709285
}
jq について詳しくは、jq のドキュメントと jq play を参照してく� さい。
たとえば、各 issue のタイトルと作成者 ID を取得できます。
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
per_page: 2,
});
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}`)
}
たとえば、>
を使用して、応答をファイルにリダイレクトできます。
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" > data.json
その後、jq を使用して、各 issue のタイトルと作成者 ID を取得できます。
jq '.[] | {title: .title, authorID: .user.id}' data.json
前の 2 つのコマンドでは次のようなものが返されます。
{
"title": "Update index.html",
"authorID": 10701255
}
{
"title": "Edit index file",
"authorID": 53709285
}
jq について詳しくは、jq のドキュメントと jq play を参照してく� さい。
次の手� �
この記事では、リポジトリの issue を一覧表示して作成する方法について説明しました。 さらに練習する� �合は、issue にコメントを付けたり、issue のタイトルを編集したり、issue を閉じてみたりしてく� さい。 これらの操作について詳しくは、「issue コメントの作成」と「issue の更新」を参照してく� さい。
使用できる操作について詳しくは、REST リファレンス ドキュメントを参照してく� さい。