GraphQL?
1525 ワード
GraphQL(以下GQL)は、Facebookによって作成されたGraph Query Languageであり、アプリケーション層クエリー言語である.
GQLはStructed Query Language(SQL)と同様にクエリ言語である.
SQLの目的は、データベースシステムに格納されているデータを効率的にインポートすることです.
GQLの目的は,Webクライアントがサーバから効率的にデータを取得できるようにすることである.
SQLの文(statement)は主にバックエンドシステムによって作成され、呼び出され、GQLの文は主にクライアントシステムによって作成され、呼び出されます.
GQLは、APIに提供されるクエリ言語であり、タイプシステムを使用してクエリを実行するサーバ側実行時である.
GraphQLは、特定のデータベースまたはストレージに属しておらず、既存のコードおよびデータに置き換えられます.
簡単に言えば、REST APIの概念は、すべてのリソースを1つのエンドポイントに接続することであり、接続されたエンドポイントは、リソースに関連するコンテンツのみを管理することである.
これは単純なサービスでは非常に良いが、複雑なサービスやクライアントリクエストでは「過剰」と「不足」が発生する.
また,REST APIを用いることで,複数の環境においてリソースに応じて必要な情報を実現することは困難である.一言で言えば、多くのAPIがEndpointと似ていますが、違います.
GraphQLは、上述したように、REST APIの限界を克服しようとする.
Endpointは通常1つしか生成されず、クライアントに必要なデータはクライアントによって直接作成され、呼び出され、返されます.
クライアントは必要なデータのみを返すことができます.
1回のコールで必要なデータを一度に取得できます.
REST APIにおけるN+1問題を解決することができる.
拡張が容易
バックエンドとクライアント開発者には、実行カーブがあります.
シンプルなサービスで使うのは複雑です.
ほとんどの言語でライブラリとして提供されます.
キャッシュ機能の実装は複雑です.
リクエストはtextに送信されるため,ファイル転送などを実現することは困難である.
GraphQLは、REST APIの限界を解決するために提案されたAPIクエリ言語である.
GraphQLは、クライアントがサーバから効率的にデータを取得できるようにすることを目的としています.
GQLはStructed Query Language(SQL)と同様にクエリ言語である.
SQLの目的は、データベースシステムに格納されているデータを効率的にインポートすることです.
GQLの目的は,Webクライアントがサーバから効率的にデータを取得できるようにすることである.
SQLの文(statement)は主にバックエンドシステムによって作成され、呼び出され、GQLの文は主にクライアントシステムによって作成され、呼び出されます.
GQLは、APIに提供されるクエリ言語であり、タイプシステムを使用してクエリを実行するサーバ側実行時である.
GraphQLは、特定のデータベースまたはストレージに属しておらず、既存のコードおよびデータに置き換えられます.
SQLクエリーの例
SELECT plot_id, species_id, sex, weight, ROUND(weight / 1000.0, 2) FROM surveys;
GQLクエリの例
{
hero {
name
friends {
name
}
}
}
REST APIの限界
簡単に言えば、REST APIの概念は、すべてのリソースを1つのエンドポイントに接続することであり、接続されたエンドポイントは、リソースに関連するコンテンツのみを管理することである.
これは単純なサービスでは非常に良いが、複雑なサービスやクライアントリクエストでは「過剰」と「不足」が発生する.
また,REST APIを用いることで,複数の環境においてリソースに応じて必要な情報を実現することは困難である.一言で言えば、多くのAPIがEndpointと似ていますが、違います.
GraphQL
GraphQLは、上述したように、REST APIの限界を克服しようとする.
Endpointは通常1つしか生成されず、クライアントに必要なデータはクライアントによって直接作成され、呼び出され、返されます.
長所
クライアントは必要なデータのみを返すことができます.
1回のコールで必要なデータを一度に取得できます.
REST APIにおけるN+1問題を解決することができる.
拡張が容易
短所
バックエンドとクライアント開発者には、実行カーブがあります.
シンプルなサービスで使うのは複雑です.
ほとんどの言語でライブラリとして提供されます.
キャッシュ機能の実装は複雑です.
リクエストはtextに送信されるため,ファイル転送などを実現することは困難である.
サマリ
GraphQLは、REST APIの限界を解決するために提案されたAPIクエリ言語である.
GraphQLは、クライアントがサーバから効率的にデータを取得できるようにすることを目的としています.
Reference
この問題について(GraphQL?), 我々は、より多くの情報をここで見つけました https://velog.io/@skdksldk2/GraphQLテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol