Application Programming Interfaces, of API’s, zijn een manier voor computerprogramma’s of diensten om met elkaar te communiceren. Deze communicatie vindt meestal plaats via een API endpoint, blootgelegd door een programma dat een client gebruikt.

Dit artikel vergelijkt twee populaire benaderingen voor het bouwen van API’s: representational state transfer (REST) API en Web API.

Wat is een REST API?

In tegenstelling tot wat vaak wordt gedacht, is een REST API geen protocol. Het is een architectuur, en het is de meest populaire architectuur voor het ontwikkelen van API’s. Zoals we uitleggen in GraphQL vs REST: Alles wat je moet weten, is REST stateless, dus er worden geen gegevens of status opgeslagen tussen verzoeken.

REST definieert verder meerdere architectonische beperkingen voor het bouwen van applicaties die via HTTP communiceren:

  • Client-server architectuur
  • Stateless
  • Uniforme interface
  • Cacheerbaarheid
  • Gelaagde systeemarchitectuur
  • Code on demand

REST is gemakkelijker te gebruiken dan andere API protocollen of architecturen. Het biedt daarnaast tal van andere voordelen die het de eerste keuze maken voor veel developers die API’s bouwen:

  • Diverse message formats: REST API’s worden meestal gebruikt met JSON voor het serialiseren van gegevens, maar werken met verschillende message formats, waaronder JSON, HTTP, platte tekst en XML. Dit scala aan opties geeft het een voorsprong op protocollen als Service Object Access Protocol (SOAP) die voornamelijk werken met XML via HTTP, waarbij opties als JSON aanzienlijk lichter zijn, flexibeler met ondersteuning voor arrays, en gemakkelijker te parsen in vergelijking met XML.
  • HTTP methoden: REST wordt gewoonlijk gebruikt met een van de methoden GET, POST, PATCH, DELETE, of PUT voor het ophalen van gegevens en het doen van verzoeken, afhankelijk van de implementatie van de service. Deze methoden geven gewone HTTP succes- en faalcodes terug. Andere methoden zijn OPTIONS, HEAD, en TRACE. Deze methoden zijn niet consistent tussen services, omdat sommige providers slechts één methode implementeren, afhankelijk van hun behoeften.
  • Ontkoppelde architectuur: REST heeft een client-server architectuur, dus de logica is gescheiden van de presentatie – aan meerdere onderdelen kan gelijktijdig worden gewerkt zonder interferentie.
  • Schaalbaarheid: REST API’s zijn eenvoudig, waardoor ze gemakkelijk te gebruiken zijn. Als je echter moet opschalen, kun je nieuwe eindpunten maken om complexere logica op te nemen.
  • Cachebaarheid: Hoewel REST stateless is, kan de serverrespons op de client gecachet worden om te voorkomen dat overbodige verzoeken herhaald worden. De respons van de server geeft meestal informatie over hoe het cachen moet worden uitgevoerd – waarbij de client verzoeken gedurende een bepaalde periode in de cache plaatst.
  • Beveiliging: In de meeste gevallen worden REST eindpunten blootgesteld via HTTPS eindpunten, wat ervoor zorgt dat alle API communicatie beveiligd is met TLS/SSL. REST ondersteunt ook andere autorisatie- en authenticatieschema’s, zoals OAuth2 en JSON Web Tokens (JWT).

Wat is een Web API?

Een Web API is eenvoudigweg een interface voor toegang tot serverbronnen via HTTP. De term verwijst eerder naar het concept dan naar een specifieke technologie – een Web API kan worden gebouwd met verschillende technologieën, zoals Java en ASP.NET. Web API’s gebruiken een open-source interface en maken gebruik van vele client-entiteiten zoals browsers, smartphones, tablets en laptops.

Web API’s implementeren protocolspecificaties met concepten als caching, versiebeheer en diverse content formats. Een Web API kan al dan niet een REST API zijn, afhankelijk van hoe deze gebouwd is. Web API’s worden meestal gebruikt op een gedistribueerd systeem om diensten aan te bieden op verschillende apparaten, zoals smartphones en laptops, en zijn beperkt tot de clientzijde van de webapplicatie.

Hier zijn twee voorbeelden van veelgebruikte Web API’s:

  • Google API’s: Hieronder vallen YouTube API’s, waarmee developers YouTube video’s kunnen insluiten in hun applicaties zoals websites, en Google Maps API, waarmee developers Google Maps kunnen gebruiken of insluiten op webpagina’s met behulp van JavaScript of Flash interfaces.
  • Twitter API’s: Hieronder vallen de Twitter search API, die methoden biedt voor interactie met Twitter search, en de REST API, waarmee je toegang hebt tot kerngegevens van Twitter.

Een Web API wordt uitgevoerd als een systeem-naar-systeem interactie. Hier zie je hoe de data binnen zo’n API zouden kunnen stromen:

  1. Het client-apparaat stuurt verzoeken naar de webserver.
  2. De webserver ontvangt het verzoek, verwerkt het, en stuurt het terug naar de client om te worden uitgevoerd.
  3. De uitvoer wordt aan de gebruiker getoond.

De gunstige features van Web API’s zijn hierbij:

  • Lichtgewicht architectuur: Web API’s blinken uit in apparaten met beperkte bandbreedte, zoals smartphones.
  • Beschrijvende message headers: Web API’s hebben beschrijvende message headers, die informatie kunnen bevatten over het inhoudstype, het beveiligingsschema, of hoe om te gaan met caching.
  • Ondersteunt alle gegevenstypen: De body van een web API kan voor alles gebruikt worden, inclusief binaire bestanden (video’s, afbeeldingen, documenten), gewone XML, JSON, en HTML.
  • Resource-georiënteerde service: Een web API kan resources blootstellen op een manier die voldoet aan de REST architectuur.
  • Eenvoudige configuratie en instelling: Web API’s zijn eenvoudig op te zetten en uit te voeren.

Web API vs REST API

Laten we nu deze twee API’s in meer detail vergelijken.

Overeenkomsten architectuur

Web en REST API’s delen enkele architectonische overeenkomsten – laten we er eens naar kijken.

  • Stateless : HTTP verzoeken gebeuren geïsoleerd en zijn fundamenteel stateless, omdat elk verzoek voldoende informatie bevat om het te voltooien. Meerdere verzoeken worden alleen met elkaar in verband gebracht door middel van gedeelde informatie, zoals cookies of een sessie-ID. De afwezigheid van toestandsynchronisatie vermindert de complexiteit en verhoogt de prestaties, omdat de server geen clientverzoeken hoeft bij te houden. Gelijktijdige verzoeken kunnen ook geschaald worden over meerdere servers.
  • Gelaagde architectuur: Ze ondersteunen beide een gelaagd architectuurontwerp waarbij API inzet, verzoekverificatie en opslag over meerdere servers kan gebeuren.
  • Resource-georiënteerd: In resource-georiënteerde architecturen worden resources in kaart gebracht naar Uniform Resource Identifiers (URI’s). Zowel Web als REST API’s zijn resource-georiënteerd, omdat ze hulpbronnen via URI’s beschikbaar stellen.
  • Cacheerbaarheid: In REST en Web API’s worden queries die telkens dezelfde informatie opleveren in de cache geplaatst. Bijvoorbeeld, een OPTION aanroep op een eindpunt wordt in de cache opgeslagen, omdat de uitvoer hetzelfde is, ongeacht hoe vaak hij wordt aangeroepen. Deze eigenschap, bekend als idempotence, is een goede basis om te bepalen wanneer gegevens in de cache geplaatst kunnen worden. In REST wordt altijd rekening gehouden met idempotentie, maar lang niet zo veel in web-API’s. Een idempotente API-aanroep is er een waarbij de resultaten nooit zullen veranderen – ongeacht hoe vaak hij wordt aangeroepen – zelfs als er iets op de server kan veranderen. Voorbeelden van idempotente methoden zijn GET, HEAD en OPTIONS.

Architectuurverschillen

Hoewel Web API’s en REST API’s vergelijkbare architectuurpatronen hebben, zijn er ook enkele belangrijke verschillen.

  • Coördinatie tussen client en server: REST API’s hebben een losjes gekoppelde architectuur, waardoor onafhankelijke ontwikkeling aan client- en serverzijde mogelijk is. Bij Web API’s worden wijzigingen tussen client en server fijnmaziger gecoördineerd.
  • Interface: Afhankelijk van implementatiedetails gebruiken REST API’s meestal industriestandaard interfaces. Web API’s gebruiken aangepaste interfaces, afhankelijk van de API aanbieder.

Communicatie

Web API’s zijn flexibel genoeg om elke communicatiestijl te gebruiken, terwijl REST API’s voornamelijk gebruikt worden met JSON, XML en platte tekst. Deze opties betekenen dat REST API’s goed presteren voor tekstuele gegevensoverdracht, zoals create, read, update en delete (CRUD) operaties naar een database, maar beperkter zijn als het gaat om binaire gegevens.

Web API’s bieden een veel betere ervaring voor diensten die binaire gegevens vereisen – zoals muziek of video streaming diensten – omdat ze meer berichtformaten ondersteunen.

Use cases

Hoewel deze API formaten in veel gevallen uitwisselbaar zijn, zijn er een paar scenario’s waarin de ene beter is dan de andere:

  • Cloud diensten en toepassingen: Vanwege hun stateless aard worden REST API’s gebruikt in clouddiensten, omdat stateless componenten kunnen schalen en herplaatsen om veranderingen op te vangen. Clouddiensten en metrics kunnen meestal het best worden blootgesteld als REST API’s, omdat er weinig aangepaste code nodig is.
  • Streamingsdiensten: Web API’s hebben betere ondersteuning en lage overhead van applicatie binaire gegevens op apparaten met geheugen of bandbreedtebeperking, dus zijn ze het beste voor diensten die streaming vereisen.
  • Databasemanipulatie (CRUD): Het is eenvoudiger en gemakkelijker om CRUD functionaliteit via een REST API aan te bieden dan via een Web API.

REST API’s zijn moeilijk te beheren voor complexe verzoeken die toegang moeten hebben tot resources die niet in een eenvoudige hiërarchie zijn gerangschikt. Dit komt door de URI’s die verwijzen naar bronnen, wat betekent dat voor het beheer van dit soort situaties URI paden, query parameters en de request body gemanipuleerd moeten worden, wat het doel van REST teniet doet. In dit geval verdient een web API de voorkeur omdat die maatwerk toestaat en uitgebreide ondersteuning biedt voor URI respons en request headers.

Met ondersteuning voor technieken als asynchrone calls – die niet eenvoudig te implementeren zijn met de REST architectuur – zijn web API’s de aangewezen weg voor complexe API behoeften.

Samenvatting

Web en REST API’s worden gebruikt om applicaties te bouwen die resources aanbieden en communiceren via HTTP. Waar REST architectonische beperkingen beschrijft over een uniforme interface, zijn web API’s in het algemeen een concept dat RESTful kan zijn, afhankelijk van de implementatie.

Zowel Web als REST API’s zijn lichtgewicht indelingen die in veel situaties uitwisselbaar zijn. Vergeleken met REST API’s bieden Web API’s echter een meer aangepaste ervaring en ondersteuning voor meer message types, en ondersteunt deze complexe interacties tussen servers en clients die te maken hebben met binaire gegevens.

En met de Applicatie Hosting diensten van Kinsta kun je je API projecten sneller en efficiënter bouwen, testen en sturen naar de cloud.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.