Upgrade to Pro — share decks privately, control downloads, hide ads and more …

作って学ぶ GraphQL

Kyo Sato
October 15, 2022

作って学ぶ GraphQL

Go Conference mini 2022 Autumn IN Sendai の発表スライドです。
GraphQL についてまとめてみました。

Kyo Sato

October 15, 2022
Tweet

More Decks by Kyo Sato

Other Decks in Programming

Transcript

  1. GraphQL - Facebook - OSS - API のために作られた クエリ言語 -

    既存のデータに対するクエリ を実行するランタイム
  2. REST vs GraphQL HTTP requests HTTP responses GET /api/user?id=1 GET

    /api/address?user_id=1 { ”id” : 1, “name” : “user1” } { ”street” : “Aoba street”, “city” : “Sendai city” }
  3. REST vs GraphQL HTTP requests HTTP responses GET /api/user?id=1 GET

    /api/address?user_id=1 { ”id” : 1, “name” : “user1” } { ”street” : “Aoba street”, “city” : “Sendai city” } 2回 API を叩いてる!!
  4. REST vs GraphQL HTTP requests HTTP responses GET /api/user?id=1 GET

    /api/address?user_id=1 { ”id” : 1, “name” : “user1” } { ”street” : “Aoba street”, “city” : “Sendai city” } 2回 API を叩いてる!!
  5. REST vs GraphQL HTTP requests HTTP responses POST /graphql query

    { user(id: 1){ id } } { ”user” : { “id”: 1, } }
  6. REST vs GraphQL HTTP requests HTTP responses POST /graphql query

    { user(id: 1){ id name } } { ”user” : { “id”: 1, “name”: “user1” } }
  7. REST vs GraphQL HTTP requests HTTP responses POST /graphql query

    { user(id: 1){ id name address{ street city } { ”user” : { “id”: 1, “name”: “user1”, “address”: { “street”: “Aoba street”, “city”: “Sendai city” } } }
  8. REST vs GraphQL HTTP requests HTTP responses POST /graphql query

    { user(id: 1){ id name address{ street city } { ”user” : { “id”: 1, “name”: “user1”, “address”: { “street”: “Aoba street”, “city”: “Sendai city” } } } 1 回 API を叩くだけで良い
  9. クエリ伝播の問題、スキーマ設計の難しさ query { user(id: 1){ id name address{ street city

    history{ people awards{ year{ awardName personName } } sample{ sample sample sample } sample{ sample
  10. クエリ伝播の問題、スキーマ設計の難しさ query { user(id: 1){ id name address{ street city

    history{ people awards{ year{ awardName personName } } sample{ sample sample sample } sample{ sample スキーマを把握していないと、サーバー にとって非常に時間のかかる処理のクエ リを送ってしまう可能性がある