まくろぐ
更新: / 作成:

GraphQL クエリ言語の フィールド・エイリアス 機能を使うと、取得したフィールド値を参照するときに、任意の別名を付けて参照することができます。 例えば、GraphQL スキーマとしては company というフィールド名で定義されているものを、companyName という JSON プロパティ名で返して欲しいときは、次のようにフィールド・エイリアスを使用します。

GraphQL クエリ
query ProfileInfoWithAlias {
  user(login: "maku77") {
    name
    companyName: company
    bio
  }
}
レスポンス
{
  "data": {
    "user": {
      "name": "Makkuma",
      "companyName": "maku maku company",
      "bio": "すーぱーぷにぐらまー"
    }
  }
}

フィールド・エイリアスは、同名のフィールドを異なる引数で取得するときに役立ちます。

GraphQL クエリ
query {
  maku77: user(login: "maku77") {
    ...basicUserInfo
  }
  puni: user(login: "puni") {
    ...basicUserInfo
  }
}

fragment basicUserInfo on User {
  name
  bio
}

上記のように 1 つのクエリの中で同名のフィールド(ここでは user)を要求する場合に、フィールド・エイリアス(ここでは makupuni)を付けることで、レスポンスのプロパティ名がコンフリクトしないようにします。 というより、このケースではエイリアスを設定しないと、リクエスト時にエラーになります。

レスポンス
{
  "data": {
    "maku77": {
      "name": "Makkuma",
      "bio": "すーぱーぷにぐらまー"
    },
    "puni": {
      "name": "Puni Puni",
      "bio": "ぷにぷにぷにょーん"
    },
  }
}

なお、上記クエリ内の ...basiUserInfo という部分では、フラグメントの仕組み を使って、取得するフィールドの定義を使いまわしています。

関連記事

まくろぐ
サイトマップまくへのメッセージ