GraphQL?

1525 ワード

GraphQL(以下GQL)は、Facebookによって作成されたGraph Query Languageであり、アプリケーション層クエリー言語である.
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は、クライアントがサーバから効率的にデータを取得できるようにすることを目的としています.