Was ist ASP.NET Core Minimal WebAPIs ?

Eine ASP.NET Core Minimal WebAPI ist eine HTTP-API, die ohne Controller-Klassen aufgebaut wird.
Die Endpunkte werden direkt in `Program.cs` oder in ausgelagerten Methoden über `MapGet()`, `MapPost()`, `MapPut()` oder `MapDelete()` definiert. Microsoft beschreibt Minimal APIs als den empfohlenen Ansatz für neue, schnelle HTTP-APIs in ASP.NET Core, weil dafür weniger Code und weniger Konfiguration nötig sind.

Der Kern besteht aus zwei Bausteinen:
`WebApplicationBuilder` zum Konfigurieren der Anwendung und `WebApplication` zum Definieren und Starten der Endpunkte. Ein Endpunkt ist dabei meist nur eine Lambda-Funktion oder Methodengruppe, die Requestdaten entgegennimmt und ein Ergebnis zurückgibt.

Beispiel

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/hello", () => "Hallo Welt");

app.Run();

Der Vorteil ist die sehr geringe Einstiegshürde. Für kleine Services, Microservices, Prototypen oder schlanke Backend-APIs ist das oft ideal. Microsoft nennt Minimal APIs ausdrücklich passend für Anwendungen mit möglichst wenigen Dateien, Features und Abhängigkeiten. ([Microsoft Learn][3])

Auch komplexere Szenarien sind möglich. Parameter können automatisch aus Route, Querystring, Headern, Body oder per Dependency Injection gebunden werden. Dadurch lassen sich auch Datenbankkontexte, Logger, Konfigurationen oder eigene Dienste direkt als Parameter in einen Handler injizieren. Zudem unterstützt ASP.NET Core für Minimal APIs unter anderem OpenAPI, Filter, Fehlerbehandlung, Authentifizierung und Autorisierung.

Beispiel mit Route, DI und Typed Results:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<PersonRepository>();

var app = builder.Build();

app.MapGet("/persons/{id}",
Results<Ok<Person>, NotFound> (int id, PersonRepository repo) =>
{
var person = repo.GetById(id);

if (person is null)
return TypedResults.NotFound();

return TypedResults.Ok(person);
});

app.Run();

public class PersonRepository
{
private readonly List<Person> data =
[
new(1, "Anna"),
new(2, "Bernd")
];

public Person? GetById(int id) => data.FirstOrDefault(p => p.Id == id);
}

public record Person(int Id, string Name);

Wesentliche Merkmale der ASP.NET Core Minimal WebAPIs

  • Kein Controller notwendig
  • Routen werden direkt per Map...() definiert
  • Weniger Boilerplate
  • Sehr gut für kleine bis mittlere APIs
  • Trotzdem volle ASP.NET-Core-Infrastruktur nutzbar wie DI, Middleware, Authentifizierung, Autorisierung und OpenAPI.

Beratung & Support

Schulungen

Anfrage für eine individuelle Schulung zum Thema ASP.NET CORE MINIMAL WEBAPIS Gesamter Schulungsthemenkatalog

Fachbücher

Alle unsere aktuellen Fachbücher E-Book-Abo für ab 99 Euro im Jahr