TIL | GraphQL



RESTとGraphQLの違い

  • RESTリソースの形式と要求方法を結びつける.
  • GraphQL銀資源の形態は請求方法から完全に分離されている.
  • REST

  • GET : /books/1
  • {
        "title" : "Romeo and Juliet",
        "author" : {
            "name" : "william shakespeare",
            "nation" : "UK",
            "birth" : 1564
        }
    }

    GraphQL

  • type definition
  • type Book {
        id: ID
        title: String
        author: Author
    }
    type Author {
        id: ID
        name: String
        birth: Int
        books: [Book]
    }
  • Query
  • type Query {
    	book(id: ID!): Book
    	author(id: ID!): Author
    }
  • Request : /graphql?query={ book(id: "1") { title, author { name } } }
  • {
      "title": "Romeo and Juliet",
      "author": {
        "name": "william shakespeare",
      }
    }
    RESTとは異なり、GraphQLはエンドポイントにアクセスします.

    pros & cons


    pros

  • クライアントに必要なデータのみを返す
  • 1回の呼び出しで必要なデータが得られる
  • REST APIでN+1問題を解決できる
  • 大規模なサービスの場合、エンドポイント管理を簡素化できる
  • cons

  • 動き曲線がある
  • 簡易サービスが使いづらい
  • 要求がテキスト形式で送信されるため、ファイル等のデータの処理が困難