開発者向け
KontentでのネイティブGraphQLサポートは開発者に何をもたらしますか?
By Ondrej Polesny
GraphQLまたはRESTAPI?ヘッドレスCMSからコンテンツを取得するための最良の方法は何ですか?また、欠点はありますか?
この記事では、Kontentの新しいネイティブGraphQLエンドポイントを紹介し、開発者の観点からGraphQLの利点を説明し、JavaScriptでの使用方法を示し、GraphQLをREST APIと比較して、一方が他方よりも大幅に優れているかどうかを確認します。 。
GraphQLとは何ですか?
GraphQLは、データをフェッチする方法です。これはRESTAPIの代替手段であり、多くの人がデータを取得する「新しい」方法と呼んでいます。 GraphQLを使用する主な理由は次のとおりです。
- 必要なデータのみを取得します
- APIの詳細を学ぶために、ドキュメントを何時間も勉強する必要はありません
- 1つのクエリで複数のデータソースを組み合わせることができます
単純なGraphQLクエリは次のようになります。
注: content
この文脈では、コンテンツタイプのコードネームです。
そのページに必要なのはそれだけなので、Webサイトのホームページのタイトル、ティーザー、および3つの記事のスラッグをフェッチします。応答は最小限のJSONです。
では、「ドキュメントを読む必要がない」という点はどこにあるのでしょうか。記事があり、それぞれにタイトルとティーザーがあることを実際にどのようにして知ることができますか?
GraphQLにはスキーマが付属しています。これはすべてのコンテンツのマップであり、クエリを作成してテストできるGraphiQLまたはGraphQL Playground(オンラインで動作)の優れた情報源です。それを見てみましょう。
GraphQLクエリを作成してテストする
オンライン遊び場を開きます。まず、KontentエンドポイントURLを追加する必要があります。これはhttps://graphql.kontent.ai/
遊び場に入るときは、右側の[スキーマ]タブを展開します。プロジェクトの生成されたスキーマが表示されます。
しかし、それは最良の部分ではありません。左側に、次のクエリ構文を記述します。
そして、中括弧内にカーソルを置いてCTRL + SPACE(Macの場合はOPTION + SPACE)を押します。利用可能なすべてのデータを示すIntelliSenseポップアップが表示されます。
プロジェクトの完全な構造を知っている必要も、APIの詳細を理解している必要もありません。利用可能なアイテムをナビゲートし、ユースケースに必要なデータとプロパティをマークできます。中括弧は現在のアイテムを展開し、括弧はフィルタリング、制限、および順序付けを可能にします。再生ボタンはクエリを実行し、フェッチされたデータを表示します。
プロジェクトで試して、プロジェクトに役立つクエリを作成してください。
JavaScriptプロジェクトでのGraphQLの使用
クエリができたので、JSプロジェクトでどのように使用できますか?
REST APIでは、Axios、Request、Fetch(現在はブラウザーで広く利用可能)などのサードパーティツールを利用してクエリを作成および実行することに慣れていました。 GraphQLでは、Apolloクライアントを使用する必要があります。
クライアントを作成し、適切なエンドポイントを使用するように構成します。
注:Reactを使用していて、アプリ全体の多くのページでクライアントが必要な場合は、ReactアプリをラップしてApolloProvider
コンポーネントを使用できます。 useQuery
を使用してデータをフェッチします。
次に、GraphQLクエリを使用してデータのフェッチを開始できます。
クライアントはデータをJSONで返すため、コンポーネントで直接使用できます。
GraphQLとRESTAPI
では、GraphQLとREST APIのどちらが優れているのでしょうか?簡単な長所と短所のリストを作成しましょう:
GraphQL | REST API | |
長所 |
|
|
短所 |
|
|
明確な勝者はいないのではないかと思います。いつものように、それはあなたのプロジェクトとその要件に依存します。
GraphQLは元々、複数のソースからのデータフェッチを合理化するために作成されました。これにより、開発者は、ドキュメントを読むのに半日を費やすのではなく、実装に集中できます。そしてそれは完璧にそれを行います。 GraphQLは、Kontentのコンテンツ、Shopifyの製品、PostgreSQLデータベースのユーザーデータなどを必要とする大規模なプロジェクトのデータフェッチの簡素化に大きな違いをもたらします。このトピックに興味がある場合は、 Apolloに関する私の記事をチェックしてください。
主に単一のソース(ヘッドレスCMS)からのコンテンツを扱う小規模なプロジェクトの場合、GraphQLは目新しいものではありません。 GatsbyやGridsomeですでに見たことがあり、開発速度に大いに役立つことを学びました。クエリを適切なサイズに保つことができれば、多くの欠点はありません。特に今、KontentがグローバルFastlyCDNでホストされているネイティブGraphQLエンドポイントを備えている場合。
結論
この記事では、GraphQLとは何か、RESTAPIとの比較について説明しました。プロジェクトのエンドポイントに接続されたビジュアルビルダーを使用してGraphQLクエリを構築する方法と、JavaScriptプロジェクトでGraphQLを使用してコンテンツをフェッチする方法を示しました。
GraphQLとReactに興味がある場合は、GitHubでKontent ReactGraphQLサンプルアプリを確認してください。また、ご質問やご意見がございましたら、 Discordに参加してお知らせください。