🐥

GraphQLのクエリについて

2023/07/30に公開

概要

GitHub API v4を用いてGraphQLのクエリについて学んでいきます。

自分のプロフィールを取得

自身の人物紹介と登録日を取得します。

query {
  user(login: "1s22s1") {
    createdAt
    bio
  }
}

レスポンスは、以下になります。

{
  "data": {
    "user": {
      "createdAt": "2021-01-15T14:28:02Z",
      "bio": "お腹がいっぱいです。"
    }
  }
}

自分のプロフィールとレポジトリを取得

自身のプロフィールとレポジトリの作成日と名前を取得します。

query {
  user(login: "1s22s1") {
    createdAt
    bio
    repositories(first: 3) {
      edges {
        node {
          createdAt
          name
        }
      }
    }
  }
}

レスポンスは、以下になります。

{
  "data": {
    "user": {
      "createdAt": "2021-01-15T14:28:02Z",
      "bio": "お腹がいっぱいです。",
      "repositories": {
        "edges": [
          {
            "node": {
              "createdAt": "2022-12-29T13:44:26Z",
              "name": "dotfiles"
            }
          },
          {
            "node": {
              "createdAt": "2023-01-01T11:44:20Z",
              "name": "back_up"
            }
          },
          {
            "node": {
              "createdAt": "2023-01-01T12:24:17Z",
              "name": "1s22s1"
            }
          }
        ]
      }
    }
  }
}

自分がフォローしている方を取得

自身がフォローしている方の名前を取得します。

query {
  user(login: "1s22s1") {
    following(first: 3) {
      edges {
        node {
          name
        }
      }
    }
  }
}

レスポンスは、以下になります。

{
  "data": {
    "user": {
      "following": {
        "edges": [
          {
            "node": {
              "name": "Alexander Wang"
            }
          },
          {
            "node": {
              "name": "Satoshi Terasaki"
            }
          }
        ]
      }
    }
  }
}

レポジトリに星を付けている方を取得

レポジトリに星を付けている方の名前を取得します。

{
  repository(owner: "terrastruct", name: "d2") {
    stargazers(first: 3) {
      nodes {
        name
      }
    }
  }
}

レスポンスは、以下になります。

{
  "data": {
    "repository": {
      "stargazers": {
        "nodes": [
          {
            "name": "Anmol Sethi"
          },
          {
            "name": "Chafik HADJ ABDOU RAZACK"
          },
          {
            "name": "Nandhagopal B"
          }
        ]
      }
    }
  }
}

Discussion