Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

GraphQLのエイリアスってどういうときに使えるの?

f:id:Arty_Mireiyu:20220201135051p:plain

PyQチームのtsutomuです。
今日は、GraphQLのクエスト「Non-Null、Union、Fragment」の2問目に関連して、エイリアスについて紹介します。

GraphQLは、Facebookが開発したデータ操作を行うWeb APIのクエリ言語とランタイムです。

参考

ja.wikipedia.org

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_namec_nameの両方とも、nameのエイリアスです)

{
   search(q: "ai") {
       ... on User { u_name: name }
       ... on Company { c_name: name }
   } 
}

上記のクエリを実行すると下記のような結果になります。

{'data': {'search': [{'u_name': 'Daikichi'}, {'c_name': 'Kaisha'}]}}

上記の結果では、DaikichiUser型で、KaishaCompany型ということがわかります。

下記も参考にしてください。

blog.pyq.jp

Copyright ©2017- BeProud Inc. All rights reserved.