GraphQLの利点として挙げられる「エンドポイントを集約できる」という点について質問です。これはRESTfulのAPIでは扱うデータの構造ごとにエンドポイントが必要だったが、GraphQLでは1つのエンドポイントで全てのデータを返せるようにしておき、実際に必要なデータ構造はクエリで指定するものと理解しています。
それでも、ユーザーからのリクエストに応じて構造の異なるデータを取得しようとする場合、サーバーサイドで分岐処理が必要になるはずです。そうなると、分岐がクライアント側にあるか、サーバー側にあるかの違いに思えます。
javascript
1// データ構造ごとにエンドポイントが異なるRESTful APIの実装 2// クライアント側のコード 3function getData() { 4 switch(ユーザー指定のデータ) { 5 case "name": 6 get("http://hoge/get_name"); // { name: "Fuga" } 7 break; 8 case "age": 9 get("http://hoge/get_age"); // { age: 40 } 10 break; 11 case "name_and_age": 12 get("http://hoge/get_name_and_age"); // { name: "Fuga", age: 40 } 13 break; 14 } 15 return 16}
node
1// データ構造に関わらずエンドポイントが単一のGraphQLの実装 2// サーバー側のコード 3var { graphql, buildSchema } = require('graphql'); 4var schema = buildSchema(` 5 type Query { 6 name: String 7 age: Number 8 } 9`); 10var root = { 11 name: () => { 12 return 'Fuga'; 13 }, 14 age: () => { 15 return 40; 16 }, 17}; 18 19var query; 20switch (ユーザー指定のデータ) { 21 case "name": 22 query = '{ name }' 23 break; 24 case "age": 25 query = '{ age }' 26 break; 27 case "name_and_age": 28 query = '{ name, age }' 29 break; 30} 31 32graphql(schema, query, root).then((response) => { 33 console.log(response); 34});
エンドポイントを集約できると、具体的にどのようなメリットがあるのでしょうか?
クエリの直感的な分かりやすさからGraphQLに興味を持っているのですが、エンドポイントの件がどうしても分からず、教えて頂きたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。