GraphQL クエリ言語の フィールド・エイリアス 機能を使うと、取得したフィールド値を参照するときに、任意の別名を付けて参照することができます。
例えば、GraphQL スキーマとしては company
というフィールド名で定義されているものを、companyName
という JSON プロパティ名で返して欲しいときは、次のようにフィールド・エイリアスを使用します。
query ProfileInfoWithAlias {
user(login: "maku77") {
name
companyName: company
bio
}
}
{
"data": {
"user": {
"name": "Makkuma",
"companyName": "maku maku company",
"bio": "すーぱーぷにぐらまー"
}
}
}
フィールド・エイリアスは、同名のフィールドを異なる引数で取得するときに役立ちます。
query {
maku77: user(login: "maku77") {
...basicUserInfo
}
puni: user(login: "puni") {
...basicUserInfo
}
}
fragment basicUserInfo on User {
name
bio
}
上記のように 1 つのクエリの中で同名のフィールド(ここでは user
)を要求する場合に、フィールド・エイリアス(ここでは maku
と puni
)を付けることで、レスポンスのプロパティ名がコンフリクトしないようにします。
というより、このケースではエイリアスを設定しないと、リクエスト時にエラーになります。
{
"data": {
"maku77": {
"name": "Makkuma",
"bio": "すーぱーぷにぐらまー"
},
"puni": {
"name": "Puni Puni",
"bio": "ぷにぷにぷにょーん"
},
}
}
なお、上記クエリ内の ...basiUserInfo
という部分では、フラグメントの仕組み を使って、取得するフィールドの定義を使いまわしています。
関連記事
- GraphQL クエリ仕様: ディレクティブによる条件分岐 (@include, @skip)
- GraphQL スキーマ仕様: @deprecated ディレクティブで非推奨のフィールドを示す
- GraphQL スキーマ仕様: インタフェース型 (interface type) を定義する
- GraphQL スキーマ仕様: スキーマ定義の基本
- GraphQL スキーマ仕様: 型やフィールドに説明文 (description) を記述する
- Apollo Client の fetchMore を自動で呼び出して GitHub GraphQL の100件制限を乗り越える (useAutoFetchMore)
- Apollo CLI の codegen で GraphQL クエリレスポンスの TypeScript 型を自動生成する