Övning - Enkel GET-förfrågan
🎯 Vad du kommer lära dig
- Att använda
HttpClientför att göra ett enkelt GET-anrop. - Att skapa en C-Sharp-klass som matchar en JSON-struktur.
- Att deserialisera ett JSON-svar till ett C-Sharp-objekt.
- Att presentera data som hämtats från ett externt API.
🧩 Uppgift
Din uppgift är att skriva en konsolapplikation som hämtar en specifik “to-do” från test-API:et JSONPlaceholder och skriver ut dess titel och om den är avklarad eller inte.
Specifikt ska du hämta “to-do” med ID 4.
Adressen (endpoint) för detta är: https://jsonplaceholder.typicode.com/todos/4
Exempel på hur JSON-svaret ser ut:
{
"userId": 1,
"id": 4,
"title": "et porro tempora",
"completed": true
}
🚀 Steg-för-steg-guide
- Skapa projektet: Skapa ett nytt C# konsolapplikations-projekt.
- Skapa en DTO-klass: Skapa en klass, döp den till
Todo. Den ska ha egenskapernaTitle(string) ochCompleted(bool). Du kan även ta medIdochUserIdom du vill. - Hämta datan: I din
Main-metod, skapa enHttpClient. AnvändGetStringAsyncför att anropa URL:en ovan och spara JSON-svaret i en sträng. - Omvandla datan: Använd
JsonSerializer.Deserializeför att omvandla JSON-strängen till ettTodo-objekt. - Presentera resultatet: Skriv ut en snygg text till konsolen, till exempel:
Uppgift: et porro temporaAvklarad: Ja
💡 Tips
- Kom ihåg att din
Main-metod måste varaasync Taskför att du ska kunna användaawait. - Om du vill visa “Ja” eller “Nej” istället för
trueellerfalse, kan du använda en enkel if-sats eller en ternary operator:todo.Completed ? "Ja" : "Nej".
💡 Klicka här för facit
using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
// DTO-klass som matchar JSON-datan
public class Todo
{
public string Title { get; set; }
public bool Completed { get; set; }
}
public class Program
{
public static async Task Main(string[] args)
{
using var client = new HttpClient(); // Skapa en HttpClient för att göra anrop
string url = "https://jsonplaceholder.typicode.com/todos/4"; // URL för att hämta todo med ID 4
try
{
string jsonResponse = await client.GetStringAsync(url); // Hämta JSON-svaret
Todo? todo = JsonSerializer.Deserialize<Todo>(jsonResponse); // Deserialisera JSON till ett Todo-objekt
if (todo is not null) // Kontrollera att vi fått svar (alltså inte null)
{
string status = todo.Completed ? "Ja" : "Nej";
Console.WriteLine($"Uppgift: {todo.Title}");
Console.WriteLine($"Avklarad: {status}");
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"Ett fel inträffade: {e.Message}");
}
}
}