<aside> 💡

Jullie hebben al eerder gebruikt gemaakt van een API! Weten jullie nog dat jullie een project moesten maken met een API van https://apivault.dev/

</aside>

Je komt ze de hele dag tegen zonder het te merken. De weer-app op je telefoon bevat zelf geen weergegevens; die vraagt ze op bij een API van het KNMI. Een webwinkel rekent je betaling niet zelf af, maar stuurt een verzoek naar de API van een betaaldienst. "Inloggen met Google" is een API-gesprek tussen die site en Google.

Extra endpoints

Runt je API? Hier vindt je tutorials voor een aantal endpoints die je op het voorbeeld kan toepassen:

Endpoint: Alle resultaten ophalen

Endpoint: één resultaat opvragen

Endpoint: Snelste tijden

Wat is JSON?

API opzetten

API testen met Bruno

<aside> 💡

Wil je een extra challange? Maak de API dan in PHP. Koen Hommers heeft hier eerder een volledige tutorial voor gemaakt: GitHub - Keun/api-game . Op vrijdagen geeft Koen keuzedeel en kan je langs lopen als je vast loopt.

</aside>

Hulp:

Hulp bij foutmeldingen

image.png

Waarom zit er iets tussen?

Een database begrijpt alleen SQL, en SQL is krachtig. Wie rechtstreeks met een database mag praten, kan alles lezen, alles wijzigen en alles weggooien. Er is geen manier om tegen een database te zeggen: "deze gebruiker mag alleen zijn eigen score opslaan."

Door er een API tussen te zetten verplaats je drie dingen naar een plek die jij beheert.

Het wachtwoord. Dat staat voortaan op één computer, en niet in elk programma dat je uitdeelt. Programma's op de computer van iemand anders kun je namelijk uit elkaar halen.

De regels. De API kan verzoeken weigeren. Een tijd van min 400 seconden, duizend verzoeken per minuut, of iemand die onder andermans naam probeert te schrijven: dat houd je hier tegen. Een database doet dat niet, die controleert alleen datatypes.

De vertaling. De database geeft rijen terug, en daar kan een game weinig mee. De API maakt er JSON van, een tekstformaat dat elke programmeertaal kan lezen.

Hoe ziet zo'n afspraak eruit?

Eén afspraak heet een endpoint, en bestaat uit drie delen.

Deel Wat het is Voorbeeld
Werkwoord wat wil je doen GET, POST, PUT, DELETE
Adres waar gaat het over /resultaten
Antwoord wat krijg je terug 200 OK plus JSON

Die vier werkwoorden ken je al, alleen onder een andere naam. Ze zijn precies CRUD:

HTTP CRUD SQL
GET Read SELECT
POST Create INSERT
PUT Update UPDATE
DELETE Delete DELETE

Een verzoek en het antwoord zien er dan zo uit:

http

POST /resultatenContent-Type: application/json{ "naam": "Daan", "score": 120 }

http

200 OK{ "bericht": "Opgeslagen." }

Meer is het niet. Een vraag in tekst, een antwoord in tekst, en een nummer dat zegt of het gelukt is.