REST is een architectuurstijl, ontwikkeld door Roy Fielding in 2000 voor zijn proefschrift, waarmee software met andere software kan communiceren. REST API’s worden meestal gebruikt om HTTP-services te ontwikkelen. Er bestaan verschillende richtlijnen voor REST, pas als een API daaraan voldoet, mag je spreken van een RESTful webservice. In dit blogartikel bespreken we wat een REST API is en de vier verschillende levels van REST.
REST staat voor Representational State Transfer en API is de afkorting van Application Program Interface. Eerst even kort wat over API. Simpel uitgelegd kun je API zien als een stekker die je in een stekkerdoos (systeem of applicatie) wilt stoppen. Op die manier kunnen systemen en applicaties namelijk met elkaar communiceren. Een API biedt dan de ingang voor die communicatie. Dat geldt ook voor een REST API, maar REST wordt meestal gebruikt om webservices te ontwikkelen. Het grote verschil tussen API en REST API is dat een API technisch specifiek voor een platform of applicatie is geschreven, terwijl een REST-service gebouwd is op de principes van HTTP en in theorie op andere protocollen kan werken.
Er bestaan vier verschillende levels binnen REST:
Level 0: The swamp of POX
Dit niveau houdt in dat je gebruikmaakt van HTTP, waarbij POX staat voor Plain Old XML. Technisch gezien kan REST worden geleverd via elk application layer protocol, zolang het voldoet aan bepaalde eigenschappen. In de praktijk gebruikt eigenlijk iedereen HTTP. In level 0 wordt een single HTTP-methode gebruikt (POST) voor het aanmaken van resources en vindt de communicatie plaats op basis van XML.
Level 1: Resources
Resources vormen de kerndata waarmee je applicatie werkt. Deze resources bevinden zich weer in een collectie. Je hebt bijvoorbeeld resources die behoren tot een andere resource genaamd ‘Klant’: een foto, bezoekadres, bezorgadres of contactmethode. De resource ‘Klant’ is weer onderdeel van de collectie ‘Klanten'. Jouw data is opgebouwd uit resources en collecties, maar het is geen relationele database. Je bouwt dus zelf links tussen deze resources en collecties om de juiste informatie op te halen.
Level 2: HTTP Verbs
Je wilt niet elke keer nieuwe resources aanmaken voor elke actie die je wilt uitvoeren. Hiervoor gebruik je dan ook HTTP Verbs. Deze Verbs geven de HTTP-actie aan die je kunt uitvoeren op een collectie of resource:
Level 3: Hypermedia Controls
Hypermedia wordt vaak gezien als nice-to-have. Het bouwen en beheren van hypermedia kost namelijk best wat inspanning. Maar als je een RESTful webservice wilt ontwikkelen, dan hoort dit er nu eenmaal bij. Het doel van hypermedia is om links te bouwen tussen de resources. Bij de resource 'Klant’ horen bijvoorbeeld ook een specifiek adres, foto en werkgever (zie level 1). Met hypermedia maak je dan op basis van HTTP een link tussen de resources die bij elkaar horen.
Wanneer je al deze levels doorloopt, dan kom je tot de Glory of REST: pas dan mag je een API echt een REST API noemen. In de kern betekent REST dat je met collecties werkt met daarin resources, die je op een gestructureerde manier hebt opgebouwd, zodat de structuur voor iedere gebruiker helder is.
Bekijk dan onderstaande video waarin een van onze developers je uitlegt hoe je een goede REST API definieert. Heb je hulp nodig bij REST API? Op dit moment zijn onze experts hard aan het werk, maar laat gerust je vraag achter of plan een moment in om met ons te chatten.