点数
70点
感想
説明が足りない部分が多く、わかりづらかった。
通常はRESTで十分なので、特別な要件がない限りはGraphQLが必要になることはないと思う。
GraphQLとは
- APIのクエリ言語とそれをサーバーサイド実行するためのランタイムの両方を指す。
- 使用の際にはGraphQLサーバの構築が必要である。
- サーバにはApollo Server、GraphQL-JS、graphQL Yogaなどがある。
- フロントエンドからGraphQLに直接クエリを実行することもできるが、Apollo Client, Relayなどのクライアントライブラリを使うと作業が簡単になる。
- Apollo ServerとApollo Clientを使うのが一般的。
(ApolloはGraphQLのフロントエンドとバックエンドのオープンソースライブラリ)
REST APIとの比較
REST APIの場合
データ取得は以下のようなリクエストとなる。
- /user /user/100
- /user/100/posts
- /user/100/posts/77
GraphQLの場合
1つのリクエストで全てを取得することができるようになるため、よリクエスト回数を減らすことができる。
(条件を指定することで必要なデータのみ取得可能)
- /graphql
GraphQLの構成
クエリ言語とスキーマ言語の2つで構成されている。
クエリ言語
GraphQLサーバにリクエストするための言語で以下の3種類がある。
- query: データ取得
- mutation: 更新系
- subscription: イベント通知
スキーマ言語
- GraphQL APIの仕様を記述するための言語。
- リクエストはスキーマ言語で記述したスキーマに従って実行されレスポンスを生成する。
- スキーマ言語はあくまで仕様の定義のみで、実際のデータ操作はリゾルバと呼ばれるメソッドになる。
(スキーマがインターフェース、リゾルバがそれを実装したメソッド)
コメント