Leerdoelen

  • Wat is een REST API?
  • Hoe gebruiken we een REST API?

REST – data uitwisseling

  • REST staat voor REpresentational State Transfer
  • Bedoelt voor communicatie tussen systemen
  • Gebruikt HTTP als transport protocol
  • Maakt vaak gebruik van JSON
  • Een API (Application Programming Interface):
    • Maakt het mogelijk om verschillende applicties met elkaar te laten praten
    • Zorgt voor een zelfde taal

Werken met REST

  • Client-Server-model: de server levert data, de client vraagt ze op
  • Stateless: elke aanvraag bevat alle benodigde informatie
  • Resource-gebaseerd: alles is een resource (bijv. gebruiker, product)
  • Gebruik van standaard HTTP-methoden:
    GET
    lezen van data
    POST
    aanmaken van data
    PUT
    bijwerken van data
    DELETE
    verwijderen van data

REST API Structure

  • Een typische URL-structuur:
    • https://api.voorbeeld.nl/v1/gebruikers/1
    • https:// → protocol
    • api.voorbeeld.nl → FQDN
    • /v1/ → versienummer van de API
    • /gebruikers/1 → resource en ID

cURL – de website testing tool

  • Let op PowerShell: curl.exe
  • curl.exe http://domain.tld/path/
    • Haalt HTML pagina op (index.html)
    • Niet de verdere data (plaatjes) in de pagina
    • cURL doet default een GET
  • curl.exe -X GET http://www.google.com/
  • Handige opties
    • X <METHOD>
    • H <HEADER>
      • laat de response headers zien

REST-API output

  • JSON of XML
  • Op basis van een header
  • Met curl:
    curl.exe \
        -X GET \
        -H "Content-Type: application/json" \
         http://127.0.0.1:8000/items/5?q=somequery

Voorbeeld van REST-API call

Verzoek aan de server:

GET /v1/gebruikers/1 HTTP/1.1
Host: voorbeeld.nl
Content-Type: application/json

HTTP-antwoord in JSON:

{
  "id": 1,
  "naam": "Jan Jansen",
  "email": "jan@example.com"
}

Authenticatie en beveiliging

  • Gebruik HTTPS om de communicatie te versleutelen
  • Authenticatie:
    • OAuth 2.0
      • Gebruik van een 3de authorisatie instantie (google, facebook, etc.)
    • API-sleutels (onderdeel van de query string of een header)
      • Eeuwig geldig (handmatig intrekken)
    • API-Tokens (bijv. JWT - JSON Web Tokens)
      • Tijdelijk geldig (verlopen)
    • Authorisatie
      • Geef alleen toegang tot wat nodig is (least privilege)

Voordelen REST API

  • Eenvoudig te gebruiken en te begrijpen
  • Platform- en taal-onafhankelijk
  • Goed schaalbaar
  • Ondersteund door vrijwel elk framework en systeem

Samenvatting

  • REST API’s maken communicatie tussen systemen gestandaardiseerd en eenvoudig
  • Gebaseerd op HTTP-standaard en resources
  • Veel gebruikt in web-, mobiele- en cloudapplicaties
  • Essentieel voor elke moderne systeembeheerder