GitHub の GraphQL API を使ってみる


GitHub に API アクセスしたかったので、使い方を調べたまとめ

GitHub API

GitHub の API には、REST API と GraphQL API がある

以下では、GraphQL を使っていくことにする

試した環境

  • GitHub アカウント
    • 登録しておく
  • Insomnia
    • API クライアントソフトとして Insomnia を使う
    • Postman 等の他のクライアントソフトでもいい

準備

アクセストークンを取得する

Creating a personal access token - GitHub Docs に従ってトークンを取得する

  1. 登録しているメールアドレスを検証する

  2. GitHub にログインし、ページ右上のメニューから [Settings] をクリックする

  3. 左側のメニューから、[Developer settings] をクリック

  4. 左側のメニューから、[Personal access tokens] をクリック

  5. [Generate new token] をクリック

  6. Note にトークンの説明を記述

  7. 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
  8. [Generate token] をクリック

  9. 生成されたトークンを記録しておく(再表示はできないので、確実に保存しておく)

  10. organizations がシングルサインオンを設定している場合は、[Enable SSO] を開いて、対象リポジトリを [Authorise] する

GraphQL API を投げてみる

  1. Insomnia を起動する

  2. New Request で新しいリクエストを作る

  3. エンドポイントに以下を入力

    https://api.github.com/graphql
    
  4. Auth タブをクリックし [Basic Auth] を選択し、下記のように入力

    • USERNAME : GitHub のアカウント名を入力
    • PASSWORD : 先ほど生成したトークンを入力
  5. Body タブをクリックし、[GraphQL Query] を選択し、下記のように入力

    query{
      user(login: "ログインユーザー名"){
        login
        name
      }
    }
    
  6. [Send] をクリック

  7. うまくいっていれば JSON 形式のレスポンスが返ってくる

    {
      "data": {
        "user": {
          "login": "ログインユーザー名",
          "name": "指定していた名前"
        }
      }
    }
    

スキーマを確認する

スキーマの定義を確認することができる

  • Insomnia の [schema] をクリックし、[Show Documentation] をクリックする

  • ウィンドウの右側にスキーマ定義が表示される

クエリ

何種類かクエリー、ミューテーションを試してみる

リポジトリを取得

  • ユーザ名(もしくは組織名)、リポジトリ名 でリポジトリを取得

エイリアス&フラグメントを使ってユーザを取得

プルリクエストを取得

文字列でリポジトリを検索

  • Variables の query に与えた文字列で検索する

ミューテーション

スターを付ける

  • starrableId は、repository クエリーで入手できる id を指定する

プルリクを Approve する

  • pullRequests で取得した id で指定する

プルリクをマージする

  • pullRequests で取得した id で指定する