GraphQL是什么?我也进行了与REST API的比较
GraphQL点
-
- Graph(グラフ構造の) + QL(クエリ言語)。Web APIの1つでREST APIの次のパラダイムとして注目されている
-
- GraphQL APIのエンドポイントは1つで、データ操作の種類(CRUD)と欲しいレスポンス形式を指定してリクエストし、データを取得することができる
- クライアント(フロントエンド)側からデータのレスポンス形式を指定できる
GraphQL的术语
用語意味Queryクエリ処理( = Get)Mutationトランザクション処理( = Put/Post/Delete)SchemaAPIの定義。クライアントがサーバーにクエリを送信し、返却値として期待されるオブジェクトの型を定義Subscriptionクライアントへの通知。( = WebSocketと同様の効果)
机构的形象
与REST API进行对比
比較項目REST APIGraphQLデータ操作の種類GET/POST/PUT/DELETEQuery/Mutationエンドポイント複数([GET]user/[PUT]setting など欲しいデータによってリクエスト先エンドポイントが変わる)1つ(データ操作の種類と欲しいレスポンス形式を指定する)型付け弱い強いPub/Subなし(WebSocketを使用することが多い)可(subscription)
好处
-
- クライアントからAPIのレスポンスの指定ができる
-
- サブスクリプションを利用したリアルタイム処理ができる
クライアントはデータをサブスクライブすることで、イベントドリブンに処理を実装することが可能
缺点
-
- N + 1 問題が発生する可能性
クエリの指定方法によってはパフォーマンス問題や脆弱性を生みやすい。
Securing Your GraphQL API from Malicious Queries