Løs denne opgave sammen med din studigruppe.
Herunder er tre offentlige API’er hvor I skal dykke ned i dokumentationen. Læs spørgsmålene, besvar dem sammen med din gruppe, og skriv svarene ned.
URI: https://dictionaryapi.dev/
Spørgsmål:
URI: https://ghibliapi.herokuapp.com/
Spørgsmål:
URI: https://www.reddit.com/dev/api/
Reddit API’en kræver en key, så den er ikke så nem at komme i gang med, som de andre. Men kig i dokumentationen for at svare på spørgsmålene.
Spørgsmål:
Du skal nu undersøge en offentlige API som findes her:
https://todo-api-krdo.azurewebsites.net/
Du kan bruge værktøjet Postman som anvendes til at specificere og sende HTTP requests.
API’en understøtter følgende metoder:
Til POST og PUT skal der være JSON i body på denne form:
{
"text": "string",
"done": true
}
Din opgave er at prøve alle metoderne, og i hvert tilfælde skal du notere ned indhold og status code på det response, du får tilbage.
Når du tester med Postman, hvor du skal sende JSON til API’en, skal det tilføjes til requestet således:
Du skal nu lave en simpel web api med “ASP.Net Core Web Api - Minimal APIs”.
Projektet startes sådan her (navnet efter -o kan ændres, hvis du har lyst):
$ dotnet new web -o min-første-api
Åben Program.cs og læs koden.
Lav ændringer til “MapGet” så du i stedet for at returnerer "Hello World!" returnerer new { Message = "Hello world!" }
Du skal også ændre routen fra / til /api/hello/.
Test din nye API. Læg især mærke til status code og den output du får i response - hvilket format er outputtet i?
Du skal nu tilføje lidt nyt til hello-api’en.
Tilføj følgende endpoint til din kode og test den:
app.MapGet("/api/hello/{name}", (string name) => new { Message = $"Hello {name}!"));
Når du har fået den til at virke, skal du også tilføje kode, der svarer til dette endpoint:
Lav en ny API som indeholder et array af frugtnavne:
String[] frugter = new String[]
{
"æble", "banan", "pære", "ananas"
};
Tilføj følgende endpoints:
index, som er et tal.Du skal nu tilføje en POST som kan sende nye frugter til frugt-API’en.
Nye frugter sendes til POST-endpointet som JSON. JSON skal have følgende format (eksempel):
{
"name": "citron"
}
Når du koder POST-routen, er du nødt til at lave en type, der svarer til inputtet i routen. Typen kunne være følgende record, som placeres i bunden af Program.cs:
record Fruit(string name);
Din route kan herefter kodes således:
app.MapPost("/api/fruit", (Fruit fruit) =>
{
// TODO: Tilføj den nye frugt til dit array!
Console.WriteLine($"Tilføjet frugt: {fruit.name}");
// TODO: Returnér herefter arrayet med alle frugter
});
Der mangler muligvis lidt fejlhåndtering i din frugt-api.
Hvis man sender et POST /api/fruits/ uden JSON, eller hvor fruit.name er tom, ville det være oplagt at returner 400 Bad Request.
Hvordan gør man det? Find svaret i dokumentationen og skriv koden.
Dokumentationen kan findes her: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis
Du skal nu implementere Todo Task API’en fra opgave 2. Din udgave skal fungere på samme på som den offentlige API.
Start med de nemme routes, dvs. dem der hedder noget med GET. Test dem, og lav herefter resten færdigt.
Brug teknikker og inspiration fra de tidligere opgaver.