Methode Adres Wat het doet
GET /resultaten/3 geeft het resultaat met id 3

De SQL

Vervang weer de SQL:

SELECT cursist, oefening, seconden, fouten, id
FROM resultaten
WHERE id = @id;

Nieuw: een waarde uit de URL

Zet de id:int tussen accolades, en vang het op als parameter:

app.MapGet("/resultaten/{id:int}", async (int id) =>{// ...});

Die :int is belangrijk. Daarmee zeg je: hier hoort een getal te staan. Zonder die toevoeging matcht dit adres straks ook op /resultaten/top, en dat gaat je in opdracht 3 opbreken.

Geef id daarna mee aan je query, net als bij INSERT:

cmd.Parameters.AddWithValue("@id", id);

Nieuw: wat als het niet bestaat?

ReadAsync() geeft false terug als er geen rij is. Dan is er niets gevonden, en dat is geen 200:

await using var reader = await cmd.ExecuteReaderAsync();

if (!await reader.ReadAsync())
    return Results.NotFound(new { bericht = $"Geen resultaat met id {id}." });

return Results.Ok(new Resultaat(
    reader.GetString(0),
    reader.GetString(1),
    reader.GetDecimal(2),
    reader.GetInt32(3),
    reader.GetInt32(4)));

Let op het verschil met opdracht 1: daar gebruikte je while, hier if. Je verwacht nu maximaal één rij.