GraphQL
GraphQLとは?
GraphQLは、Facebook上で作成されたアプリケーション層のクエリー言語です.
通常、REST APIは、APIの実装時に使用される.このようにAPIを実装するには、クライアントが任意の機能を必要とする場合に新しいAPIを作成する必要がある.
GraphQLは、クライアントから必要なデータを効率的に取得し、これらの問題を改善するためのクエリー言語です.
GraphQLとREST APIの違い
APIのEndPoint
REST APIでは、各リソースには、リソースのほとんどのコンテンツを担当するEndPointがあります.
しかし、GraphQLの場合、API全体に使用されるエンドポイントは1つしかありません.
API応答構造
同様に、REST APIでは、1つのエンドポイントから返すことができる応答構造は固定され、GraphQLは応答構造をユーザに必要な方法に変換することができる. REST API応答構造 GraphQL応答構造 APIリクエスト
複数のリソースにアクセスする必要がある場合、REST APIは複数のリクエストを必要とし、GraphQLは複数のリソースに一度にアクセスすることを許可する.
API処理方法
REST APIでは、各要求はエンドポイントで定義されたHandling関数を呼び出してタスクを処理し、GraphQLは各要求フィールドのResolverを呼び出してタスクを処理する.
GraphQL vs REST API
一つだけを選ぶよりも、状況に応じて選んだほうがいい.
異なる形状の異なる要求に応答する必要がある場合、GraphQLを使用することがより有利であり、要求がファイル転送などの単純なテキストとして処理されない場合、または構造化応答が必要である場合、REST APIを使用することがより有利である.
GraphQL構造
Query/Mutation
Queryはデータの読み出し(R)、Mutationはデータの変更(CUD)に使用します.
Schema/Type
データベース内のSchemaに対応するGraphQLの構造.
未宣言フィールドに対応するデータは使用できません.オブジェクトタイプ:モデル フィールド:name,サブModels スカラータイプ:String、ID、Intなど 感嘆符(!):必須かどうか 角括弧([,]):配列 を表す
Resolver
GraphQLのクエリーはGraphQLのライブラリに割り当てられ、データベース内のデータはResolverを実装することによって処理されます.
GraphQLクエリでは、各フィールドにResolverと呼ばれる特定のタイプの関数が返されます.フィールドがスカラーでない場合、このタイプのResolverが呼び出されます.
Introspection
既存のREST API構造では、クライアントはAPIコンポーネントを理解するためにAPIリストを交換するプロセスを必要とする.しかしGraphQLでは,サーバ上でモードを定義して確認できるInterospectionという機能がある.
Interospection機能を使用すると、サーバ側はAPIリストを別途要求することなく、アーキテクチャ情報をリアルタイムで共有できます.
References https://tech.kakao.com/2019/08/01/graphql-basic/ https://www.holaxprogramming.com/2018/01/20/graphql-vs-restful-api/
GraphQLは、Facebook上で作成されたアプリケーション層のクエリー言語です.
通常、REST APIは、APIの実装時に使用される.このようにAPIを実装するには、クライアントが任意の機能を必要とする場合に新しいAPIを作成する必要がある.
GraphQLは、クライアントから必要なデータを効率的に取得し、これらの問題を改善するためのクエリー言語です.
GraphQLとREST APIの違い
APIのEndPoint
REST APIでは、各リソースには、リソースのほとんどのコンテンツを担当するEndPointがあります.
しかし、GraphQLの場合、API全体に使用されるエンドポイントは1つしかありません.
API応答構造
同様に、REST APIでは、1つのエンドポイントから返すことができる応答構造は固定され、GraphQLは応答構造をユーザに必要な方法に変換することができる.
複数のリソースにアクセスする必要がある場合、REST APIは複数のリクエストを必要とし、GraphQLは複数のリソースに一度にアクセスすることを許可する.
API処理方法
REST APIでは、各要求はエンドポイントで定義されたHandling関数を呼び出してタスクを処理し、GraphQLは各要求フィールドのResolverを呼び出してタスクを処理する.
GraphQL vs REST API
一つだけを選ぶよりも、状況に応じて選んだほうがいい.
異なる形状の異なる要求に応答する必要がある場合、GraphQLを使用することがより有利であり、要求がファイル転送などの単純なテキストとして処理されない場合、または構造化応答が必要である場合、REST APIを使用することがより有利である.
GraphQL構造
Query/Mutation
Queryはデータの読み出し(R)、Mutationはデータの変更(CUD)に使用します.
Schema/Type
データベース内のSchemaに対応するGraphQLの構造.
未宣言フィールドに対応するデータは使用できません.
type Model {
name: String!
subModels: [SubModel!]!
}
Resolver
GraphQLのクエリーはGraphQLのライブラリに割り当てられ、データベース内のデータはResolverを実装することによって処理されます.
GraphQLクエリでは、各フィールドにResolverと呼ばれる特定のタイプの関数が返されます.フィールドがスカラーでない場合、このタイプのResolverが呼び出されます.
Introspection
既存のREST API構造では、クライアントはAPIコンポーネントを理解するためにAPIリストを交換するプロセスを必要とする.しかしGraphQLでは,サーバ上でモードを定義して確認できるInterospectionという機能がある.
Interospection機能を使用すると、サーバ側はAPIリストを別途要求することなく、アーキテクチャ情報をリアルタイムで共有できます.
References
Reference
この問題について(GraphQL), 我々は、より多くの情報をここで見つけました https://velog.io/@dogy/GraphQLテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol