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
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Eseguire script pre e post esecuzione di un workflow di GitHub
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Proteggere le risorse Azure con private link e private endpoints
Generare velocemente pagine CRUD in Blazor con QuickGrid
Loggare le query più lente con Entity Framework
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Ordine e importanza per @layer in CSS
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Change tracking e composition in Entity Framework
I più letti di oggi
- .NET Conference Italia 2018 - Milano
- Tutorial ASP.NET
- Seconda preview per i Dynamic Data Control 4.0
- Disponibile al download la versione finale di Mozilla Firefox 4
- Microsoft Security Bulletin MS02-044
- Shared Source Initiative per gli MVP
- Mono 1.1.10 per un po' di ASP.NET 2.0
- Webcast 'ASP.NET 2.0 HttpRuntime'