Minimal APIs

Geschreven door Sander Nijhof op

Minimal APIs is in .NET6 geïntroduceerd. Met Minimal APIs ben je als ontwikkelaar in staat om met een paar regels code en minimaal aantal dependencies een HTTP API op te zetten.

Een alternatief voor MVC

Minimal APIs kan gezien worden als een alternatief voor het bouwen van je HTTP API, het is niet bedoeld om ASP.NET Core MVC te vervangen. Met Minimal APIs heb je beschikking tot minimale functionaliteit om je HTTP API te maken waar ASP.NET Core MVC veel meer aangekleed is. Een voorbeeld daarvan is API versioning, een functionaliteit die (nog) niet in Minimal APIs beschikbaar is maar wel in ASP.NET Core MVC.

Verschillen met ASP.NET Core MVC

ASP.NET Core MVC is uitgebreider en completer dan Minimal APIs. Een aantal functionaliteiten die wel beschikbaar zijn in ASP.NET Core MVC zijn niet, of niet out-of-the-box, beschikbaar in Minimal APIs.

Een aantal voorbeelden:

  • Er is geen ondersteuning voor filters, dit zou je op kunnen vangen door gebruik te maken van middleware.
  • Er is geen out-of-the-box support voor validatie. Hiervoor bestaan oplossingen zoals Fluent Validation.
  • Geen ondersteuning voor API versioning, wellicht dat dit wel beschikbaar is in .NET7.

Een HTTP API met een paar regels code

Op het moment dat .NET nieuw voor je is, is Minimal APIs een mooie oplossing om een HTTP API op te zetten. Je hoeft hier namelijk niet het ASP.NET Core MVC framework voor te kennen wat in vergelijking met Minimal APIs uitgebreider en complexer is om op te zetten. Je moet je echter wel bewust zijn van de beperkingen t.o.v. het ASP.NET Core MVC framework.

Een HTTP API opzetten met Minimal API kan gedaan worden met een paar regels code, zo is het met drie regels code mogelijk om een "Hello World" te schrijven:

var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run("http://localhost:3000");

Als je bovenstaand voorbeeld start en in je browser navigeert naar "http://localhost:3000" zie je "Hello World!".

Dependency Injection

Een van de meest gebruikte patterns is Depedency Injection (DI). In Minimal API's is het vrij eenvoudig om DI toe te passen. In onderstaand voorbeeld wordt "cache" geïnjecteerd.

app.MapDelete("/cache/{id}", async (string id, ICache cache) => {
    await cache.Delete(id);
    return Results.Accepted();
});

Conclusie

Wij vinden Minimal APIs een goed alternatief, zeker als je net met .NET begint of gebruikt voor hobby projecten. In de toekomst verwachten we dat het zeker een volwaardige vervanging kan zijn voor MVC controllers. Wil je meer weten, kijk dan eens naar de voorbeelden van Microsoft hier.

Sander NijhofSander is een .NET expert en houdt zich graag bezig met nieuwe en moderne technologie. Op dit moment werkt hij aan verschillende APIs bij het Rijksinstituut voor Volksgezondheid en Milieu (RIVM).
← Terug
XPRTZ