RESTとGRAPHQLは、WebサイトAPIを構築するための2つの仕様です。 RESTは、アプリケーションがデータを要求して送信するために使用する一連の一意の識別子(URL)を定義します。 GraphQLは、クライアントアプリケーションが単一のエンドポイントから取得するために必要なデータを正確に指定できるようにするクエリ言語を定義します。それらは、ほぼ同じことのための関連手法です(実際、彼らは共存することができ、しばしば共存することができます)が、それらも非常に異なっています。
それをより興味深い方法で説明しましょう。これは、あなたがよりよく理解するのに役立ち、GraphQLについて少し興奮するかもしれません!
?あなたはカクテルパーティーにいます
このカクテルパーティーに参加して専門家のつながりを拡大するので、当然、周囲の人々に関するデータを収集したいと考えています。近くには他に5人の参加者がいました。
彼らの名前タグは言う:
- リッチな休息
- リッチーレストの友達
- Richy Restの雇用主
- ジョージアGraphQl
あなたのエネルギッシュで、社会的で、外向的な性質として、あなたはまっすぐにリッチな休息に向かって歩き、「こんにちは、私はアダムアプリケーションです、あなたは誰ですか?」と言いました。リッチー・レストは答えた:
<code>{ name: "Richy REST", age: 33, married: false, hometown: "Circuits-ville", employed: true // ... Richy REST的其他20条信息}</code>
「うわー、たくさんの情報があります」とあなたは自分自身に考えました。厄介な沈黙を避けるために、あなたは彼が雇われ、「どこで働いているの?」と尋ねたリッチー・レストが言及したことを覚えています。
奇妙なことに、Richy Restは彼がどこで働いているのかわかりません。多分リッチー・レストの雇用主は知っていますか?
あなたはRichy Restの雇用主に同じ質問をしました、そして彼はあなたの問い合わせに喜んで答えてくれます!彼はこのように答えました:
<code>{ company: "Mega Corp", employee_count: 11230, head_quarters: "1 Main Avenue, Big City, 10001, PL" year_founded: 2005, revenue: 100000000, // ... Richy REST雇主的其他20条信息}</code>
この時点で、あなたは疲れています。あなたはリッチー・レストの友達に会いたくありません!それには長い時間がかかり、すべてのエネルギーを排出し、時間がありません。
しかし、ジョージアのグラフクルは丁寧にそこに立っているので、あなたは彼女とコミュニケーションをとることにしました。
「こんにちは、あなたの名前は何ですか?」
<code>{ name: "Georgia GraphQL" }</code>
「どこから来たの、何歳ですか?」*
<code>{ hometown: "Pleasant-Ville", age: 28 }</code>
「趣味や友達はいくつありますか、友達の名前は何ですか?」
<code>{ hobbies_count: 12, friends_count: 50, friends: [ { name: "Steve" }, { name: "Anjalla" }, // ...等等] }</code>
Georgia GraphQLは素晴らしく、明確で、簡潔で、要点です。あなたは彼女と名刺を交換し、将来のプロジェクトで彼女と協力したいと考えています。
このストーリーは、休息の代わりにGraphQLを使用する開発者の経験を要約しています。 GraphQLを使用すると、開発者は簡潔なクエリでニーズを表現し、指定したコンテンツのみを受け取ることができます。これらのクエリは完全に動的であるため、1つのエンドポイントのみが必要です。一方、RESTには事前定義された応答があり、多くの場合、完全なデータニーズを満たすために複数のエンドポイントを使用するためにアプリケーションが必要です。
比phorは終わります!重要なポイントについて話しましょう。
カクテルパーティーのメタファーで提案されている基本的な概念についてさらに詳しく説明するために、RESTを使用するときによく表示される2つの制限を詳細に説明しましょう。
1.関連するリソースを取得するときは、複数のリクエストが必要です
データ駆動型のモバイルおよびWebアプリケーションは、多くの場合、関連するリソースとデータセットが必要です。したがって、REST APIを使用してデータを取得するには、複数のエンドポイントへの複数の要求が必要になる場合があります。たとえば、ポストエンティティと関連著者の要求は、異なるエンドポイントに2つのリクエストを発行する必要がある場合があります。
<code>someServer.com/authors/:id someServer.com/posts/:id</code>
APIへの複数のアクセスは、アプリケーションのパフォーマンスと可用性に影響を与える可能性があります。これはまた、低帯域幅デバイス(スマートウォッチ、モノのインターネット、古いモバイルデバイスなど)にとってより重要な問題です。
2。過剰な取得と不十分なデータ収集
RESTFUL APIを使用する場合、過度のフェッチと不十分なデータ収集は避けられません。上記の例を使用して、Endpoint domainname.com/posts/:IDは、特定の投稿のデータを取得します。各投稿は、ID、ボディ、タイトル、PublishingDate、Authoridなどの属性で構成されています。STRESでは、同じデータオブジェクトが常に返されます。応答は事前に定義されています。
ポストタイトルとボディのみが必要な場合、データの過剰なデータが発生します。これは、実際に使用されているよりも多くのデータがネットワークに送信されるためです。投稿全体に関連するデータとその著者が必要な場合、実際に使用されるよりも少ないデータがネットワークに送信されるため、不十分なデータ収集が発生します。データ収集が不十分な場合、APIへの複数の要求により、帯域幅の使用が過度に使用される可能性があります。
GraphQLを使用したクライアントクエリ
GraphQLは、クライアントアプリケーションに優れた柔軟性を提供する真にユニークなアプローチを紹介します。 GraphQLを使用して、クエリはAPIに送信され、必要なもののみをリクエストで返します。クエリの結果はクエリと同じ形で返され、応答構造が常に予測可能であることを保証します。これらの要因により、アプリケーションは、サーバーではなく、得られるデータを制御できるため、より速く、より安定して実行できます。
「結果はクエリと同じ形で返されます。」
<code>/* 查询*/ { myFriends(first: 2) { items { name age } } }</code>
<code>/* 响应*/ { "data": { "items": [ { "name": "Steve", "age": 27 }, { "name": "Kelly", "age": 31 } ] } }</code>
現実のテスト✅
今、あなたはGraphQLがSamuraiナイフでホットバターを切るのと同じくらい簡単だと思うかもしれません。フロントエンド開発者の場合、これは現実かもしれません。特にGraphQL APIを使用する人です。ただし、サーバー側のセットアップに関しては、誰かがソーセージを作らなければなりません。私たちの友人ジョージアグラフクルは、彼女が今いるような傑出した専門家になることに多くの努力を注いでいます!
GraphQL API(サーバー側)の構築には、時間、労力、専門知識が必要です。とはいえ、それは挑戦に直面する準備ができている人のために処理できないものではありません!すべてのレベルの抽象化に関与するには、さまざまな方法があります。例えば:
- ヘルパーなし:本当に自分でやりたい場合は、ソフトウェアパッケージを使用してGraphQL APIを構築できます。たとえば、Railsのように? GraphQl-Rubyをご覧ください。 node.jsのように? Express-GraphQlをお試しください。
- アシスタント:サーバー/自己ホスティングを完全に維持することが優先事項である場合、graph.Coolのようなものは、GraphQLプロジェクトを開始するのに役立ちます。
- Instant: Crud bulerplateコードを書くのにうんざりしていて、すぐに始めたいですか? 8Baseは、インスタントグラフクルAPIとサーバーレスバックエンドを提供します。これは完全にスケーラブルです。
要約します
RESTは、非常に利用可能なリソース固有のAPIを可能にすることにより、Webサービスに大きな進歩をもたらしました。つまり、今日の相互接続されたデバイスの急増を考慮せずに設計されています。これらには、データの制限と要件が異なります。この監視は、フロントエンド開発者に大きな柔軟性を提供するため、GraphQL(2015年にFacebookがFacebookによってオープンソースを供給した)の人気にすぐに人気をもたらしました。 GraphQLを使用することは、個々の開発者とチームの両方にとって、優れた開発体験です。
以上がカクテルミキサーでGraphQLに会うの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

React Ecosystemは、すべてがドラッグアンドドロップの相互作用に焦点を合わせている多くのライブラリを提供します。 React-Dnd、React-Beautiful-Dnd、

バックグラウンドクリップをすべて頻繁に使用すると言うことができます。私は、日々のCSS作業ではほとんど使用されていない&#039; dを賭けています。しかし、私はステファン・ジュディスの投稿でそれを思い出しました、

RequestAnimationFrameでアニメーション化するのは簡単なはずですが、Reactのドキュメントを徹底的に読んでいない場合は、おそらくいくつかのことに遭遇するでしょう

おそらく、それをユーザーに提供する最も簡単な方法は、要素上のIDをターゲットにするリンクです。だから...

聞いてください、私はGraphQLの専門家ではありませんが、私はそれで働くことを楽しんでいます。フロントエンド開発者としてデータを公開する方法はかなりクールです。メニューのようなものです

今週のラウンドアップ、タイポグラフィを検査するための便利なブックマークレットである。

私は最近、Codepenの興味深い変化に気づきました。ホームページにペンをホバリングすると、丸い角が背面に拡大する長方形があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1
使いやすく無料のコードエディター

WebStorm Mac版
便利なJavaScript開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
