専門用語があるのでメモとして残す
Learning GraphQL: Declarative Data Fetching for Modern Web Apps
- 作者: Eve Porcello,Alex Banks
- 出版社/メーカー: O'Reilly Media
- 発売日: 2018/09/07
- メディア: ペーパーバック
- この商品を含むブログを見る
- Query
SQLでいう「Select」に分類されるもの。データを取得するためだけのものです(Read Only)
Queryの例
{ hero { name } }
結果の例
{ "data": { "hero": { "name": "R2-D2" } } }
- Mutation
SQLでいう「insert,update,delete」に分類されるもの。データを作成、変更、削除するための操作。 単純に翻訳すると「突然変異」ですが「作成、変更、削除」の総称とおぼえてください
mutation AddTodo($type: String!) { addTodo(type: $type) { id type } }
- Argument(引数) SQLでいう「Whereの条件」に分類されるもの。
{ human(id: "200") { weight(unit: "pounds") height } }
上記の例の「id: "200"」がArgument(引数)になります
- Alias(エイリアス:別名)
競合を避けるためにフィールドの結果に別名です。 SQLだと微妙にちがうのですが「AS句」になります
GraphQLの例
{ admin: human(id: "200") { name email } user: human(id: "400") { name email } }
SQLの例
SELECT name AS alias_name, email FROM human WHRE id='200';
- Fragments(フラグメント)
列名を繰り返し使う場合に別名にできる機能。SQL機能だと・・・ない??
上記のエイリアスの例でも
name email
を2回ほど同じ列を記載しています。 2つ程度なら問題ないですが、100件とかあると大変なので列の別名で対応したほうが、送信するときのクエリーのバイト数が減ります
Fragments(フラグメント)を使っていない場合の例
{ admin: human(id: "200") { name email } user: human(id: "400") { name email } }
Fragments(フラグメント)を使った場合の例
{ admin: human(id: "200") { ...humanFields } user: human(id: "400") { ...humanFields } } fragment humanFields on Character { name appearsIn }
- Variables(変数)
今までの例ではパラメータを直接記載(ハードコード)していますが 何回も使う場合などはVariables(変数)を宣言して対応します。 単純なSQLではないですが、ストアドの変数に該当します。
Variables(変数)を使っていない例
{ human(id: "200") { name email } book(auth_id: "200") { book_name price } }
Variables(変数)を使った例
{ human(id: user_id) { name email } book(auth_id: user_id) { book_name price } } { "user_id": "200" }