Sobes.tech
Junior

Wat is REST?

sobes.tech AI

Antwoord van AI

REST (Representational State Transfer) is een architecturale stijl voor het bouwen van gedistribueerde systemen, voornamelijk gebruikt bij het ontwerpen van webservices. Het is gebaseerd op een set principes en beperkingen die bepalen hoe webbronnen met elkaar communiceren.

Belangrijke principes van REST:

  • Client-server: Duidelijke scheiding van verantwoordelijkheden tussen client en server.
  • Stateless (zonder toestand): De server bewaart geen informatie over de toestand van de client tussen verzoeken. Elk verzoek bevat alle benodigde informatie voor verwerking.
  • Cacheable (cachebaar): Clients kunnen serverantwoorden cachen om de prestaties te verbeteren. De server geeft expliciet aan of het antwoord gecachet mag worden.
  • Gelaagde systeem: De client kan communiceren met een tussenlaag (bijvoorbeeld proxy, load balancer) zonder dat hij dat weet.
  • Code on Demand (optioneel): De server kan uitvoerbare code naar de client sturen (bijvoorbeeld JavaScript), waardoor de functionaliteit van de client wordt uitgebreid.
  • Uniforme interface: Het belangrijkste principe, dat de volgende beperkingen omvat:
    • Identificatie van bronnen (URI).
    • Manipulatie van bronnen via representaties (gegevensuitwisseling in een bepaald formaat, bijvoorbeeld JSON, XML).
    • Zelfbeschrijvende berichten (berichten bevatten alle benodigde informatie voor hun begrip).
    • HATEOAS (Hypermedia as the Engine of Application State): De client navigeert tussen toestanden van de applicatie met behulp van hyperlinks die in de antwoorden van de server zijn opgenomen.

RESTful API is een implementatie van REST-stijl voor webdiensten, die standaard HTTP-methoden (GET, POST, PUT, DELETE) gebruikt om met bronnen te werken.

// Voorbeeld van het gebruik van HTTP-methoden in RESTful API
// Resource ophalen
// GET /api/products/1

// Resource maken
// POST /api/products
// Body: { "name": "Nieuw Product", "price": 10.50 }

// Resource bijwerken
// PUT /api/products/1
// Body: { "name": "Bijgewerkt Product", "price": 11.00 }

// Resource verwijderen
// DELETE /api/products/1