イシュー情報の取得方法
イシュー情報を取得する方法は次のような方法があります。
- ユーザーからたどる方法 – viewer/user クエリ で User オブジェクト を取得し、そのユーザーに関連するイシュー(issues フィールド)を参照する方法
- リポジトリからたどる方法 – repository クエリ で Repository オブジェクト を取得し、そのリポジトリ内のイシュー(issues フィールド)を参照する方法
- ダイレクトに検索する方法 – search クエリ でもろもろの検索条件(リポジトリ名、タイプなど)を使ってダイレクトに検索する方法
search
クエリによる検索はとても柔軟で、様々な条件(query
パラメータ)を指定してイシューを検索することができます。
query
パラメータには、GitHub の Issues ページの検索窓に入力できる is:issue is:open
といった文字列で、下記のサイトに詳細仕様が記述されています。
あるリポジトリのイシューの一覧を取得する
次の GraphQL クエリでは、myorg/myrepo
リポジトリの最新 5 件のイシュー情報を取得しています。
search
クエリはそのパラメータの意味を理解するのが重要です。
type: ISSUE
- 検索対象を示す必須パラメータで、
ISSUE
/REPOSITORY
/USER
のいずれかを指定する必要があります。ここでは、イシューやプルリクエストの情報を検索することを示しています(ISSUE
はプルリクエストの情報まで含むことに注意)。
- 検索対象を示す必須パラメータで、
query: "repo:myorg/myrepo is:issue"
- 検索対象を指定したリポジトリに絞り込み、さらに、
is:issue
を指定することでプルリクエストを除外します。他にもいろいろな指定方法があります。
- 検索対象を指定したリポジトリに絞り込み、さらに、
last: 100
- 最新の 100 件までのイシュー情報を取得します。100 件を超えるデータを取得するときはページネーション処理により、複数回のクエリ実行が必要です。
その他のクエリ方法いろいろ
あるマイルストーンが設定されたイシューを取得する
この例では、myorg/myrepo
リポジトリから、マイルストーン名 Milestone #123
が設定されたイシューの一覧を取得しています。
マイルストーン名にスペースを含んでいる場合は、上記のようにエスケープされたダブルクォートでマイルストーン名を囲む必要があります。
関連記事
- GitHub GraphQL クエリ例: リポジトリの情報を取得する (repository)
- GitHub GraphQL クエリ例: 組織の情報を取得する (organization)
- GitHub の GraphQL API Explorer の使い方
- Node.js で GitHub GraphQL API を使用する (@octokit/graphql)
- GitHub GraphQL のスキーマ情報を取得する
- GitHub GraphQL API の呼び出し回数制限 (rate limit) の情報を取得する
- Apollo Client で GitHub GraphQL API を使う (Node & React)