Methode Adres Wat het doet
GET /resultaten/top/klimmen de vijf snelste tijden van die oefening

De SQL

De nieuwe SQL, nu weet je wel waar het moet staan ;)

SELECT cursist, oefening, seconden, fouten, id
FROM resultaten
WHERE oefening = @oefening
ORDER BY seconden ASC
LIMIT 5;

Nieuw: een tekst uit de URL

app.MapGet("/resultaten/top/{oefening}", async (string oefening) =>
{
    // ...
});

De rest is hetzelfde als opdracht 1: een while-lus met een reader, en de lijst in een object terug. Je kolomvolgorde is ook gelijk, dus je kunt die hele lus kopiëren.


Botsende adressen

Je hebt nu twee adressen die op elkaar lijken:

/resultaten/{id:int}
/resultaten/top/{oefening}

Met :int van de vorige endpoint erbij weet hij dat top geen getal is en pakt hij het goede adres.


Testen in Bruno

Verzoek Verwacht
GET /resultaten/top/klimmen 200 met maximaal vijf rijen, snelste bovenaan
GET /resultaten/top/zwemmen 200 met een lege lijst

Zorg dat je genoeg testdata hebt. Voeg met je POST-verzoek uit Bruno een stuk of acht klimtijden toe, zodat je kunt zien dat LIMIT 5 echt werkt.