GitHub に API アクセスしたかったので、使い方を調べたまとめ
GitHub API
GitHub の API には、REST API と GraphQL API がある
- REST API (V3) https://docs.github.com/ja/free-pro-team@latest/rest
- GraphQL API (V4) https://docs.github.com/ja/free-pro-team@latest/graphql
以下では、GraphQL を使っていくことにする
試した環境
- GitHub アカウント
- 登録しておく
- Insomnia
- API クライアントソフトとして Insomnia を使う
- Postman 等の他のクライアントソフトでもいい
準備
アクセストークンを取得する
Creating a personal access token - GitHub Docs に従ってトークンを取得する
-
登録しているメールアドレスを検証する
-
[Generate new token] をクリック
-
Note にトークンの説明を記述
-
Select scopes で以下の項目をチェックする(後から変更も可能)
- repo
- user
- admin:org > read:org
- admin:public_key > read:public_key
- admin:repo_hook > read:repo_hook
- admin:gpg_key > read:gpg_key
-
[Generate token] をクリック
-
organizations がシングルサインオンを設定している場合は、[Enable SSO] を開いて、対象リポジトリを [Authorise] する
GraphQL API を投げてみる
-
Insomnia を起動する
-
エンドポイントに以下を入力
https://api.github.com/graphql
-
Auth タブをクリックし [Basic Auth] を選択し、下記のように入力
- USERNAME : GitHub のアカウント名を入力
- PASSWORD : 先ほど生成したトークンを入力
-
Body タブをクリックし、[GraphQL Query] を選択し、下記のように入力
query{ user(login: "ログインユーザー名"){ login name } }
-
[Send] をクリック
-
うまくいっていれば JSON 形式のレスポンスが返ってくる
{ "data": { "user": { "login": "ログインユーザー名", "name": "指定していた名前" } } }
スキーマを確認する
スキーマの定義を確認することができる
クエリ
何種類かクエリー、ミューテーションを試してみる
リポジトリを取得
- ユーザ名(もしくは組織名)、リポジトリ名 でリポジトリを取得
エイリアス&フラグメントを使ってユーザを取得
プルリクエストを取得
文字列でリポジトリを検索
- Variables の query に与えた文字列で検索する
ミューテーション
スターを付ける
-
starrableId
は、repository クエリーで入手できるid
を指定する
プルリクを Approve する
-
pullRequests
で取得したid
で指定する
プルリクをマージする
-
pullRequests
で取得したid
で指定する