search
LoginSignup
2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

KDDI Engineer Advent Calendar 2020 Day 6

posted at

updated at

Organization

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] をクリックする
    20201123_graphql_001.png

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

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

  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. 生成されたトークンを記録しておく(再表示はできないので、確実に保存しておく)
    20201123_graphql_006.png

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

GraphQL API を投げてみる

  1. Insomnia を起動する

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

  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": "指定していた名前"
        }
      }
    }
    

20201123_graphql_008.png

スキーマを確認する

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

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

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

クエリ

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

リポジトリを取得

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

20201123_graphql_011.png

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

20201123_graphql_013.png

プルリクエストを取得

20201123_graphql_018.png

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

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

20201123_graphql_015.png

ミューテーション

スターを付ける

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

20201123_graphql_014.png

プルリクを Approve する

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

20201123_graphql_019.png

プルリクをマージする

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

20201123_graphql_020.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2
Help us understand the problem. What are the problem?