Minimal API è una nuova funzionalità di ASP.NET Core introdotta con .NET 6, che consente di creare un servizio web minimizzando le dipendenze e le dimensioni della nostra applicazione - idealmente, la sola classe Program!
Per creare un progetto di questo tipo, da Visual Studio 2022 è sufficiente deselezionare la checkbox "Use controllers" nel wizard di setup:

Se stiamo usando DotNet CLI, invece, dobbiamo specificare l'opzione minimal:
dotnet new webapi -minimal
A questo punto, ci troveremo un progetto che, come accennato, contiene solo il file Program.cs, il cui codice è grossomodo simile al seguente:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // Configure the HTTP request pipeline. app.UseHttpsRedirection(); var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; app.MapGet("/weatherforecast", () => { var forecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast ( DateTime.Now.AddDays(index), Random.Shared.Next(-20, 55), summaries[Random.Shared.Next(summaries.Length)] )) .ToArray(); return forecast; }); app.Run();
Il codice è piuttosto esplicativo, e l'unico endpoint in GET disponibile è dichiarato tramite il metodo MapGet, specificandone il path e la relativa logica tramite una lambda. In maniera del tutto analoga, possiamo usare MapPost, MapPut e MapDelete per dichiarare endpoint con differenti verbi HTTP.
Se abbiamo bisogno di parametri, dobbiamo indicarli nel routing e poi specificarli nella lambda stessa:
app.MapGet("/people/{id}", (int id) => { if (id == 0) return Results.NotFound(); return Results.Json(new Person { Name = "Marco" }); });
Nell'esempio in alto, abbiamo anche sfruttato la classe statica Results per restituire NotFound o un oggetto Json a seconda del valore di Id in input.
Nel caso di una POST, invece, il primo parametro della lambda rappresenta il contenuto del body della richiesta:
app.MapPost("/people", (Person person) => { // save the person // ... return Results.Accepted; });
Sebbene Minimal API abbiano alcune limitazioni rispetto ai normali controller (per esempio non supportano i Filter, o il ModelBinding), rappresentano comunque un modo veloce e conciso per creare microservizi senza troppo codice boilerplate.
Nei prossimi script torneremo su questo argomento, e parleremo di altri concetti importanti, come il supporto per la security o per la dependency injection.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Test reporting in un workflow di GitHub
Eseguire uno scroll all'interno di una pagina Blazor
Sviluppo applicazioni x-plat con .NET MAUI
Chiamare un endpoint ASP.NET Core protetto da Certificate Authentication
Leggere i dati di configurazione di ASP.NET Core da Azure Key Vault
Creare un router per Single Page Application con l'evento navigate
Innestare una query nel metodo Contains di Entity Framework Core
Personalizzare le richieste con i rule set di Azure Front Door
Utilizzare i WebSocket con Azure API Management
Taggare la output cache in base al routing in ASP.NET Core
Sfruttare l'output cache di ASP.NET Core 7 con i controller
Impostare il forward degli header in un sito ASP.NET Core dietro a un reverse proxy