Basiskennis van systeemontwerp voor backendontwikkelaars · Les

GraphQL en gRPC

Verken alternatieve API-stijlen, zoals GraphQL voor flexibel ophalen van gegevens en gRPC voor communicatie met hoge prestaties.

Les 2 van 412 stappen

GraphQL en gRPC is een gratis Basiskennis van systeemontwerp voor backendontwikkelaars-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Basiskennis van systeemontwerp voor backendontwikkelaars. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Basiskennis van systeemontwerp voor backendontwikkelaars bevat in totaal 4 lessen.

Verder dan REST: GraphQL en gRPC

RESTful API's worden veel gebruikt, maar zijn niet altijd de perfecte oplossing voor elk scenario.

Soms heb je meer controle nodig over het ophalen van gegevens of zijn extreem hoge prestaties vereist voor communicatie tussen services.

In deze les verkennen we twee krachtige alternatieven: GraphQL en gRPC.

Obstakels bij het ophalen van gegevens met REST

Traditionele REST API's leiden vaak tot twee veelvoorkomende problemen:

  • Te veel ophalen: in één aanvraag meer gegevens ontvangen dan nodig is, waardoor bandbreedte wordt verspild.
  • Te weinig ophalen: meerdere aanvragen naar verschillende eindpunten moeten doen om alle benodigde gegevens te verzamelen.

Dit kan inefficiënt zijn, vooral voor mobiele clients of complexe gebruikersinterfaces.

GraphQL: precies ophalen wat je nodig hebt

GraphQL is een querytaal voor je API en een runtime aan de serverkant voor het uitvoeren van die queries.

Clients kunnen hiermee precies de gegevens opvragen die ze nodig hebben, waardoor te veel en te weinig ophalen wordt voorkomen.

Je kunt het zien als het invullen van een formulier voor je gegevensaanvraag, in plaats van een vooraf samengesteld pakket te accepteren.

Gegevens definiëren met een GraphQL-schema

Elke GraphQL API is opgebouwd rond een schema. Dit schema definieert alle beschikbare gegevenstypen en bewerkingen (queries, mutaties).

Het fungeert als contract tussen de client en de server, zodat clients precies weten wat ze kunnen opvragen.

Hier volgt een eenvoudig voorbeeld:

type User {
  id: ID!
  name: String!
  email: String
  posts: [Post]
}

type Post {
  id: ID!
  title: String!
  content: String
  author: User!
}

Gegevens ophalen met GraphQL-queries

Clients gebruiken GraphQL-query's om gegevens op te halen. Ze specificeren precies de velden die ze willen uit de beschikbare typen die in het schema zijn gedefinieerd.

Dit betekent dat één query meerdere REST-verzoeken kan vervangen.

Bekijk hoe we alleen om de titels van name, email en post vragen:

query GetUserAndPosts {
  user(id: "123") {
    name
    email
    posts {
      title
    }
  }
}

Gegevens wijzigen met GraphQL-mutaties

Net zoals query's gegevens ophalen, worden mutaties gebruikt om gegevens op de server te wijzigen. Dit omvat het aanmaken, bijwerken of verwijderen van records.

Mutaties retourneren ook gegevens, vaak het nieuw aangemaakte of bijgewerkte object, ter bevestiging van de wijziging.

Hier is een voorbeeld waarin een nieuw bericht wordt aangemaakt:

mutation CreatePost($title: String!, $authorId: ID!) {
  createPost(title: $title, authorId: $authorId) {
    id
    title
  }
}

gRPC: RPC met hoge prestaties

gRPC (Google Remote Procedure Call) is een opensourceframework voor communicatie met hoge prestaties tussen services.

In tegenstelling tot GraphQL wordt gRPC meestal gebruikt voor interne communicatie tussen microservices, waarbij snelheid, efficiëntie en strikte contracten van groot belang zijn.

Het is gebaseerd op HTTP/2 voor transport en Protocol Buffers voor het serialiseren van berichten.

Protocol Buffers: de IDL van gRPC

gRPC gebruikt Protocol Buffers (Protobuf) als Interface Definition Language (IDL) en als onderliggend formaat voor het uitwisselen van berichten.

Protobuf definieert de structuur van je gegevens en de service-interfaces op een taalonafhankelijke manier.

Deze definitie wordt vervolgens gebruikt om client- en servercode in verschillende talen te genereren.

syntax = "proto3";

package greeter;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

gRPC: binair, HTTP/2 en streaming

Belangrijke functies van gRPC voor hoge prestaties:

  • HTTP/2: Maakt multiplexing mogelijk (meerdere verzoeken via één verbinding) en ondersteunt bidirectionele gegevensstromen.
  • Binaire serialisatie: Protobuf serialiseert gegevens naar een compact binair formaat, dat sneller en kleiner is dan JSON.
  • Codegeneratie: Genereert automatisch stubcode voor clients en servers vanuit .proto-definities, waardoor ontwikkelen eenvoudiger wordt.

Kiezen tussen GraphQL en gRPC

Wanneer gebruik je welke?

  • GraphQL: Ideaal voor flexibele API's die door clients worden gebruikt en waarbij clients hun gegevensvereisten moeten kunnen definiëren. Uitstekend geschikt voor mobiele apps en complexe gebruikersinterfaces.
  • gRPC: Het meest geschikt voor communicatie tussen services met hoge prestaties en lage latentie (bijvoorbeeld microservices), of wanneer strikte contracten en efficiënte gegevensoverdracht essentieel zijn.

Ze lossen verschillende problemen op en kunnen zelfs samen in een groter systeem worden gebruikt!

Korte controle: API-stijlen

Stel dat je een nieuwe mobiele applicatie bouwt met een complexe gebruikersinterface die verschillende gegevens moet ophalen uit een backend met zo min mogelijk netwerkverzoeken. Welke API-stijl is het meest geschikt voor de communicatie tussen client en server?

Samenvatting: flexibele en snelle API's

In deze les hebben we twee krachtige alternatieven voor API's verkend: GraphQL en gRPC.

  • GraphQL biedt een flexibele querytaal waarmee clients precies de gegevens kunnen ophalen die ze nodig hebben, en problemen met te veel of te weinig opgehaalde gegevens worden aangepakt.
  • gRPC biedt een binair communicatieframework met hoge prestaties, ideaal voor efficiënte communicatie tussen services via HTTP/2 en Protocol Buffers.

Als je hun sterke punten begrijpt, kun je het juiste hulpmiddel kiezen voor verschillende uitdagingen bij systeemontwerp.

Gratis beginnen

Leer Basiskennis van systeemontwerp voor backendontwikkelaars met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “GraphQL en gRPC” gratis?

Ja — de volledige tekst van “GraphQL en gRPC” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Basiskennis van systeemontwerp voor backendontwikkelaars wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Basiskennis van systeemontwerp voor backendontwikkelaars bevat in totaal 4 lessen.

Wat leer ik in “GraphQL en gRPC”?

Verken alternatieve API-stijlen, zoals GraphQL voor flexibel ophalen van gegevens en gRPC voor communicatie met hoge prestaties. Je oefent met Basiskennis van systeemontwerp voor backendontwikkelaars door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Basiskennis van systeemontwerp voor backendontwikkelaars te beginnen?

Ervaring vooraf is niet nodig. Basiskennis van systeemontwerp voor backendontwikkelaars op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “GraphQL en gRPC”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Basiskennis van systeemontwerp voor backendontwikkelaars?

Ja. Elke les over Basiskennis van systeemontwerp voor backendontwikkelaars bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Principes voor RESTful API-ontwerp
  2. GraphQL en gRPC
  3. Message queues en event-driven architectuur
  4. API-versioning en achterwaartse compatibiliteit
← Terug naar Basiskennis van systeemontwerp voor backendontwikkelaars