Come abbiamo introdotto nel nostro articolo su ASP.NET Core 7 (https://www.aspitalia.com/articoli/aspnet-core7/novita-aspnetcore-blazor-net7-p-4.aspx) in Minimal API possiamo raggruppare endpoint tramite route group:
app.MapGroup("/public/user") .MapUsersApi() .WithTags("Public"); app.MapGroup("/private/user") .MapUsersApi() .WithTags("Private") .RequireAuthorization(); public static RouteGroupBuilder MapUsersApi(this RouteGroupBuilder group) { group.MapGet("/", GetAllUsers); group.MapGet("/{id}", GetUser); group.MapPost("/", CreateUser); group.MapPut("/{id}", UpdateUser); group.MapDelete("/{id}", DeleteUser); return group; }
Questa tecnica presenta un gran numero di vantaggi, tra cui
- la possibilità di riutilizzare gli stessi endpoint in diversi contesti (per esempio private e public, nell'esempio in alto);
- la possibilità di definire dei prefissi di routing al di fuori dei veri e propri endpoint, così che si possano semplificare eventuali refactoring o aggiornamenti;
- poter associare configurazioni a interi gruppi, che verranno poi ereditate dai veri e propri endpoint, un po' come accade con i filtri a livello di controller (per esempio nel codice in alto abbiamo impostato come protetti tutti gli endpoint del gruppo private).
Ovviamente questi concetti si applicano anche alla output cache:
app.MapGroup("/public/user") .MapUsersApi() .CacheOutput(); // <-- eventuali policy o configurazioni qui
Nell'esempio in alto, abbiamo attivato l'output cache su tutti gli endpoint mappati sul gruppo /public/user. Ovviamente, nonostante questo gruppo supporti metodi di POST, PUT e DELETE, in assenza di custom policy, solo quelli in GET saranno oggetto di caching.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Implementare il throttling in ASP.NET Core
Eseguire attività con Azure Container Jobs
Determinare lo stato di un pod in Kubernetes
Semplificare il deployment di siti statici con Azure Static Web App
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Migrare una service connection a workload identity federation in Azure DevOps