DOCS

GraphQL を使用する理由

GraphQL を使用する理由

REST ではなく GraphQL を介して統合することを推奨する理由をご覧ください。

Zonos では、統合用に GraphQL と REST という 2 つの主要なタイプの APIs を提供しています。 REST APIs は以前から存在しており、多くの人にとって馴染みのあるものかもしれませんが、柔軟性を高め、より迅速なイノベーションを可能にするために GraphQL に移行しました。どちらもまだサポートされていますが、このガイドでは、GraphQL が統合の未来であるだけでなく、統合一般の未来であり、今日のニーズを満たすより強力なツールである理由を説明します。

GraphQL とは何ですか? 

GraphQL は、APIs と通信するための代替方法であり、複雑なデータ構造とその上にインターフェイスを構築するのに非常に適しています。データを個別のスタンドアロンの部分として扱うのとは異なり、GraphQL はデータ部分がどのように相互に接続および関連しているかを示し、情報の要求と受信を容易にします。

GraphQL は、データベースと直接通信しているかのように API と通信できるクエリ言語と考えてください。 GraphQL を使用すると、データベースにできるだけ近づけることができ、必要なデータとその取得方法を選択できるため、パフォーマンスが大幅に向上します。

GraphQL は、複雑なデータ構造でのスケーリングの問題を解決するために、Facebook によって作成されました。この導入が成功した結果、ますます多くの企業が APIs に GraphQL を使用する利点を認識し始めています。

REST についてはすでにご存知ですか? GraphQL に親しみを感じるでしょう。

GraphQL APIs は、思っているよりも簡単に操作できます。 REST APIs の使用に慣れている場合は、REST の中核となる概念がどのように GraphQL に変換されるかを説明します。

特徴RESTGraphQL
エンドポイントさまざまなアクションのために複数のエンドポイントに対してリクエストが行われますすべてのリクエストは単一のエンドポイント (例: /graphql) に対して行われます。
データの取得特定のエンドポイントで GET メソッドを使用してデータを取得するクエリを使用して必要なデータを正確にリクエストし、オーバーフェッチまたはアンダーフェッチを削減します
データの変更/アクションデータを変更または処理するには、POST、PUT、PATCH、DELETE などの HTTP メソッドを使用します。ミューテーションを使用して操作を実行します (例: 当事者の作成、Landed Cost の計算)
応答フォーマット固定応答形式は、必要かどうかに関係なく、すべての定義済みフィールドを返します。柔軟な応答により、含めるフィールドを正確に指定できるため、不必要なデータ転送が削減されます (この柔軟性が複雑だと感じる場合は、ドキュメントにある事前に作成されたクエリの例を使用して RESTful エクスペリエンスを実現してください)
データ接続関連データを取得するには複数のリクエストが必要になることがよくありますネストされたクエリにより、単一のリクエストで関連データを取得できます (例: 当事者の詳細と出荷品目を一緒に)。ユーザーは、単一の GraphQL リクエスト内で複数のミューテーションを管理するワークフローを構築して、複雑さを軽減し、効率を向上させることもできます。

GraphQL の利点

GraphQL は、正確なデータ取得、単一エンドポイントの使用、バッチ処理とキャッシュの機能の向上を通じて、より高速な応答を提供します。

正確なデータ取得

REST に関する一般的な課題は、データのオーバーフェッチまたはアンダーフェッチです。つまり、一度に不必要な情報を取得しすぎたり、必要な情報を十分に取得しなかったりすることです。 GraphQL は、必要なものを正確にリクエストできるようにすることで、これを排除します。それ以上でもそれ以下でもありません。この特異性により、パフォーマンスが向上するだけでなく、API を操作するプロセスが簡素化され、システムがより効率的でユーザーフレンドリーになります。

これがどのように役立つかの例:

  • これにより、フロントエンド開発者は UI コンポーネントに必要なデータを正確に取得できるようになり、サーバーへの往復回数が削減され、パフォーマンスが向上します。
  • チェックアウト内の品目の HS code 分類、cartonization、出荷評価、および Landed Cost の見積もりを取得したいと想像してください。 GraphQL API 経由で統合されている場合は、必要な workflows を使用して 1 回の呼び出しを行うと、1 回の応答で必要なものすべて (不要なものは何も) を取得できます。対照的に、REST APIs では、まず Classify REST API を呼び出し、その後で Rating REST API を個別に呼び出し、最後にその分類と出荷評価を 3 回目の Landed Cost REST API 呼び出しに組み込む必要があります。これらすべての REST APIs は、返せるすべての情報を返すため、必要なデータの応答を解析する必要があります。この速度の節約により、買物客が去る前に、完全な Landed Cost を迅速に返すことができます。

単一のエンドポイント

GraphQL APIs は通常、さまざまなリソースやアクションに対して複数のエンドポイントを持つ REST APIs とは異なり、単一のエンドポイントを持ちます。これにより、API の管理と理解が容易になります。

バッチ処理とキャッシュ

GraphQL のクエリをバッチ処理する機能とキャッシュ戦略のサポートにより、パフォーマンスが大幅に向上します。これらの機能はネットワークとサーバーの負荷を軽減し、ユーザーにとってより高速で信頼性の高い対話を実現します。

GraphQL APIs は、厳密に型指定されたスキーマに基づいています。このスキーマは、利用可能なデータの構造と実行できる操作を定義します。これにより、利用可能なデータとそのアクセス方法が明確になり、開発者の生産性が向上し、エラーが削減されます。たとえば、フロントエンドチームは、新しい REST エンドポイントを待つ代わりに、グラフを探索して必要なものを正確に取得できます。

GraphQL の新しい機能の追加や既存の機能の変更は、その柔軟なクエリ構造のおかげで、現在の統合を中断しません。この機能により、既存のクライアントとの互換性を損なうことなく改善を行うことができます。

GraphQL のイントロスペクション機能のおかげで、ドキュメントは自動的に生成され、変更が発生するたびに更新されます。これにより、開発者に提供されるすべての情報が最新であることが保証され、REST API ドキュメントでよく直面する課題である、古いドキュメントに関連する統合の問題やサポートチケットが削減されます。

GraphQL documentationREST documentation の違いを確認してください。

例え話 

定食からしか選べない他のレストランと比べて、自分の好きなように料理を注文できるメニューのあるレストランにいると想像してください。 GraphQL は最初のレストランのようなものです。

  • 必要なものを正確に入手: GraphQL を使用すると、それ以上でもそれ以下でもなく、必要なデータを正確に要求できます。材料のリスト全体ではなく、料理の名前と価格だけが必要な場合を想像してください。 REST APIs では、料理の詳細全体を取得し、必要のない部分を無視する必要があります。
  • カスタム料理の作成: 当社の GraphQL API を簡単に組み合わせて、より多くのカスタムソリューションを作成できます。これは、既存の材料を使用して、必要に応じて独自の料理を作成できるビュッフェスタイルレストランと同様です。対照的に、REST API は、既製の商品がカゴに詰められたパン屋のようなものです。注文できるのはすでに作成されたものだけであり、必要な部分だけを持ち帰ることはできません。
  • 待ち時間の短縮: 1 回のリクエストで必要な情報をすべて取得できるため、コース間で待つのではなく、前菜、メインコース、デザートを一度に持ってくるようにサーバーに依頼するようなものです。ほとんどの REST APIs では、さまざまな情報を取得するために複数のリクエストを送信する必要があります。
  • 注文の変更が簡単: アプリのデータを変更する必要がある場合、GraphQL を使用すると調整が簡単になります。必要なものに合わせてクエリを変更するだけです。 REST を使用すると、キッチン (バックエンド) がメニューの新しい食事 (エンドポイント) を作成するのを待つ必要がある場合があり、これにはさらに時間がかかります。

GraphQL は、特にニーズの変化や増大に応じて、REST APIs よりもデータをフェッチするための柔軟性、効率性、シンプルさを提供します。

Zonos が GraphQL を使用する方法 

過去数年間にわたってプラットフォームを最新化する中で、Zonos は、REST ではなく API に GraphQL を使用して新しい機能を構築することを選択しました。 Facebook が GraphQL を作成するきっかけとなったデータと同様に、私たちのデータは複雑で相互接続されているため、これを行うことにしました。この複雑さにより、スケーラブルな REST APIs を構築することが困難になります。開発者がデータをフェッチして使用する必要がある方法は実装ごとに大幅に異なり、REST は柔軟性に欠けるためです。

GraphQL は、API を実装する開発者が必要なデータとその取得方法を正確に選択できるようにすることで、この問題を見事に解決します。これにより、Zonos があらゆる状況で (待機中に) カスタム作業を行う必要がなく、ワークフローに適合させることができます。

GraphQL の使用とプラットフォームの最新化の組み合わせにより、API のパフォーマンスが向上し、Zonos のシステムへの統合が迅速化され、Zonos が新機能をより迅速に提供できるようになりました。

優れた機能

Zonos は継続的に新機能を開発しており、GraphQL はこれらの更新を最初に受け取る (通常は唯一) ものです。対照的に、当社の REST APIs はサポート終了とみなされ、多くの新機能にアクセスできません。

GraphQL に限定された機能の例:

  • 包括的な価格設定
  • ラベルAPI
  • 新しい Checkout と Hello
  • API 応答のボックスサイズ
  • Dashboard レポート
  • 可能であれば DDP 見積もりをリクエストしますが、そのサービスレベルで DDP がその国で利用できない場合は DDU 見積もりを返す機能
  • 関税、税金、料金の詳細な内訳 (品目レベルの情報、特定の料金) - Dashboard は GraphQL を利用しており、すべての店舗のこのデータを表示しますが、REST API 応答にはこのレベルの詳細が含まれていません。
  • テストモード (近日公開予定)

このページは役に立ちましたか?