GraphQL vs REST


GraphQL is not database.
REST cons
最近のネットワーク上の要求の大部分はRESTを使用しています.REST APIは分かりやすいです.frontendとbackendの依存性は低下した.
でも欠点はありませんか?
GraphQLgraphqlRESTの過取・欠取の問題を解決するために現れたようだ.ここのover-fetching、under-fetchingは何ですか?
over/under-fetching issue

REST API workflow. 画像をクリックすると元のページに表示されます.
図に示すように、クライアントは、ユーザ情報、文章、注目者の数を取得するために、3回の要求を発行した.ここで、お客様が本当に必要とする情報がユーザー名、記事タイトル、注目数である場合、サーバ応答に含まれるユーザーアドレス、ユーザー誕生日、記事内容などは不要な情報です.これをオーバーフェッチと呼びます(データがより多く応答します).
逆に、必要な情報は、上述したユーザ名、文章タイトル、注目数であるが、第1の要求/users/<id>の応答に対して、文章および追従者関連データがないのはunder−fetching(得られたデータが少ない)である.
逆に、graphqlはどのようにこの問題を解決したのでしょうか.
graphql case

GraphQL workflow. 画像をクリックすると元のページに表示されます.
1回のリクエストで欲しいデータが得られます.きれいになる.
では、graphqlはどのように要求を出しますか?graphqlは単一の端点を有する.POST要求/graphql.end-pointは、queryがクライアントによって記述されるものです.これはもう一つの利点を意味します.
more flexiblegraphqlは先端をより自由にします.バックエンドが提供する限定APIを使用しない場合は、必要なデータを要求し、受信して使用すればよい.
これはgraphqlが生まれたきっかけに似ている.2015年Real Confビデオを見ると、なぜMETA Facebookがgraphqlを作ったのかを説明する写真が出てきます.
Reactを使用したことがある場合は、コンポーネントがデータを処理する階層を持っていることを知っているかもしれません.React組は、上記の写真が同じ場合には、オーバー/アンダーが発生すると考えている.また、アプリケーションが遅くなると思います.(リクエストが増えている)
so..graphqlとは何かを簡単に理解しました.REST APIを使う理由はないようですね?それでも、なぜRESTを使うのでしょうか.
Comparison
REST pros
  • テクノロジーを選択する基準は、すべてのコラボレーション開発者が知っているテクノロジーであるべきです.このようにしてこそ、一緒に開発することができます.
  • 依存性が低下した.
  • GraphQL cons
    依存性の差がRESTの利点であれば、graphqlの欠点は依存性が高いことですか?そうですね.
    私が最初に言ったように、graphqlはDBではありません.DB queryでもない.
    バックグラウンドで使用できるデータにのみアクセスできます.(RESTにend-pointが複数あるように)クライアント(frontend)は、データがどのように定義されているかを知るべきである.
    次に、定義したデータにqueryを定義する必要があります.
    思ったより.本当にたくさん定義されます.
    GraphQL pros
    しかし、それでもgraphqlは、開発者がコードを読みやすくします.
    copied from github repo . apollo-server schemaの例を次に示します.後端に現れる.
    const typeDefs = gql`
        """
        fetch our data to client
        """
        type Query {
            "Query to get tracks array for the homepage grid"
            tracksForHome: [Track!]!
        }
        """
        A track is a group of module that teaches about a specific topic
        """
        type Track {
            id: ID!
            "the title of track"
            title: String!
            "the main author of track"
            author: Author!
            "the main illustration for display in track card or track page detail."
            thumbnail: String
            "the track's approximate length to complete, inminutes"
            length: Int
            "the number of modules this track contains"
            modulesCount: Int
        }
        """
        Author of a complete track
        """
        type Author {
            id: ID!
            name: String!
            photo: String
        }
    `;
    REST APIを作成した場合は、ドキュメントライブラリを作成した可能性があります.しかしながら、graphqlはschemaに上記の注釈を記述することによって開発者を助けることができる.
    Read
  • https://www.howtographql.com/basics/1-graphql-is-the-better-rest/
  • https://36-concepts-graphql.netlify.app/
  • React conf 2015 graphql presentation
  • https://odyssey.apollographql.com/lift-off-part1/