PyQチームのtsutomuです。
今日は、GraphQLのクエスト「Non-Null、Union、Fragment」の2問目に関連して、エイリアスについて紹介します。
GraphQLは、Facebookが開発したデータ操作を行うWeb APIのクエリ言語とランタイムです。
参考
PyQでは、GraphQLが初めての人でも「Pythonを使ったGraphQLのサービス構築」の初歩を学ぶことができますが、学習内容を絞っています。
PyQではエイリアスの詳しい説明をしていませんが、ここではエイリアスの使用例を紹介します。
以降では、クエストと同じく、下記のように使えるものとします。
クエリ
'search(q: "ai") {... on User { name } ... on Company { name }}'
を実行すると、結果が{'data': {'search': [{'name': 'Daikichi'}, {'name': 'Kaisha'}]}}
になる
本題
別の型に同一名のフィールドがあって結果で型を区別できない場合は、エイリアスを使うと区別できます。
下記の結果は、'Daikichi'
や'Kaisha'
のキーがどちらもname
なので、型が自明ではありません。
{'data': {'search': [{'name': 'Daikichi'}, {'name': 'Kaisha'}]}}
下記のようにエイリアスを使うと、結果で型を区別することができます。
(u_name
とc_name
の両方とも、name
のエイリアスです)
{ search(q: "ai") { ... on User { u_name: name } ... on Company { c_name: name } } }
上記のクエリを実行すると下記のような結果になります。
{'data': {'search': [{'u_name': 'Daikichi'}, {'c_name': 'Kaisha'}]}}
上記の結果では、Daikichi
がUser
型で、Kaisha
がCompany
型ということがわかります。
下記も参考にしてください。