<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.
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
<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:

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.
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.