Vi skal opsætte en RESTful API i .NET med C#. Den skal forbinde til en database, her kommer vi til at bruge ´Postgres

Man kan hente og se koden for eksemplet her - https://github.com/MAGS-Template/H3-API-Example

Opsætning og filgennemgang

Untitled

Untitled

Filgennemgang

Efter vi har hentet pakkerne, kan vi starte på at opsætte projektet. På nuværende tidspunkt burde i gerne have følgende filer I jeres løsning! Lad os lige gå igennem dem alle og se på hvad de gør

Connected Services bruger vi ikke for den her løsning, så den går vi ikke over

Dependencies kommer vi til at bruge i løbet af projektet, jeres Nuget Packages burde gerne matche den her →

Properties er som for alle andre ASP.NET projekter. Her styre vi om det skal startes som HTTP, HTTPS, IIS eller Docker.

Controllers er vigtig for vores projekt, det er her vi specificere hvad der skal være tilgængelig på vores API og hvilke end-points der skal være tilgængelige. Vi gennemgår den herunder!

Untitled

appsettings.json er som vi kender den, her kan vi holde vigtig information som vores database streng.

Dockerfile er filen som gør at vi kan starte applikationen i en container fx på Render!

Program.cs indeholder vores builder, her starter vi vores program. Den gennemgår vi også senere

WeatherForecast.cs indeholder vores klasse, fordi som meget andet C# bygges projektet med OOP i fokus!

WebAPI.http kan vi bruge til at teste vores API, vi kommer dog til at fokusere på Swagger og Postman til debugging og generelle test!

Controllers & Program.cs

Man kan se WeatherForecastController.cs controlleren neden under. Vi tager lige nogle vigtig linjer ud!

[ApiController] & [Route("[controller]")] fortæller ASP.NET at det efterfølgende er en API-Controller samt at ruten til at tilgå det specificeres ud fra hver enkel klasse. Så i det her eksempel er https://localhost:7213/WeatherForecast ruten for at tilgå vores kontroller.

[HttpGet(Name = "GetWeatherForecast")] her specifiere vi hvilken HTTPS protokol vi skal bruge. Den er kun konfigureret til GET som svare til et read på Database lag, senere ser vi hvordan vi konfigurere resten af CRUD operationerne, altså POST, PUT og DELETE

using Microsoft.AspNetCore.Mvc;

namespace WebAPI.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

Program.cs er noget kortere og noget vi har set i mange andre ASP.NET projekter!