GraphQL vs REST: hoe ze echt verschillen

GraphQL vs REST

GraphQL vs REST: dezelfde data op beide manieren opgehaald | We.Inc

Vergelijk GraphQL en REST met dezelfde data op beide manieren opgehaald: aantal requests, over-fetching, caching, hoe fouten terugkomen, en een tabel om te kiezen.

REST biedt veel URL's, één per resource, en de server bepaalt wat elke response bevat. GraphQL biedt één endpoint, meestal /graphql, waar de client een query stuurt die precies de gewenste fields noemt. REST krijgt gratis HTTP-caching per URL; GraphQL bespaart round trips en laat ongebruikte fields weg, ten koste van meer werk op de server.

In één oogopslag

De vergelijking hieronder haalt hetzelfde scherm met data op beide manieren op. Kies een scenario om de REST-calls die een client zou doen te zien naast de ene GraphQL-query die ze vervangt, en wat elke response weglaat of toevoegt.

Veelgestelde vragen

Is GraphQL sneller dan REST?

Niet vanzelf. Het kan round trips en payloadgrootte verminderen voor schermen die gerelateerde data nodig hebben, maar elke query kan de server meer kosten om op te lossen. Een goed ontworpen REST-endpoint voor één scherm kan net zo snel zijn.

Waarom komt een GraphQL-fout terug met status 200?

Een field kan falen terwijl andere slagen, dus de server stuurt de data die hij heeft plus een errors-array. De richtlijn voor GraphQL over HTTP gebruikt 2xx voor gedeeltelijk succes; servers die antwoorden met application/graphql-response+json gebruiken 400 als een request de validatie niet doorstaat.

Kan een CDN GraphQL-responses cachen?

Ja, als queries met GET worden verstuurd, wat servers alleen voor queries mogen toestaan. Lange queries kunnen URL-limieten overschrijden, dus teams gebruiken persisted queries die een korte hash sturen in plaats van het hele document.

Kan ik beide in één product gebruiken?

Veel teams doen dat. Bestandsuploads, webhooks en eenvoudige publieke resources blijven vaak REST-routes, terwijl appschermen lezen via een GraphQL-laag die daaronder dezelfde services kan aanroepen.

Heeft GraphQL een eigen database nodig?

Nee. Een GraphQL-server is een laag van resolvers, kleine functies die elk field ophalen van waar de data ook staat: een database, een REST-service of een bestand. Het schema beschrijft vormen, geen opslag.

Over-fetching en under-fetching

Caching werkt anders

Fouten en statuscodes

Welke kiest u

Keuzetabel

Wat er over de lijn gaat

Een GraphQL-request met fetch

Elke operatie is een POST van JSON met de keys query en variables naar het ene endpoint. De Accept-header vraagt om het nieuwere GraphQL-responsetype, met gewone JSON als terugval.

Een gedeeltelijke GraphQL-response

Eén field faalde, dus het is null en de errors-entry noemt het met path. De rest van de data kwam wel aan.

Profiel met posts

REST heeft een tweede call nodig voor de posts, en beide responses bevatten elk field dat de server meestuurt. De GraphQL-query geeft alleen de naam, de avatar en drie posttitels terug.

Alleen namen

Voor een eenvoudige lijst is de REST-call hoe dan ook één request, maar hij stuurt complete gebruikersrecords. GraphQL stuurt alleen de twee gevraagde fields.

Post met reacties en auteurs

Zonder een eigen endpoint loopt REST de boom één niveau per request af, en het ophalen van elke reactieauteur kan per reactie nog een call betekenen. GraphQL nest de hele boom in één query.

Een post aanmaken

Schrijfacties lijken op elkaar: elk één request. REST gebruikt de POST-methode op een collectie-URL; GraphQL stuurt een mutation, nog steeds als HTTP POST, en kiest welke fields van de nieuwe post terugkomen.

Dezelfde data, op beide manieren

Kies een scenario

REST-requests

GraphQL-query

REST-requests kopiëren

GraphQL-query kopiëren

REST: {n} request(s). GraphQL: {v} request.

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap