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
Eseguire query in contemporanea con EF
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Il nuovo controllo Range di Blazor 9
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Creare una libreria CSS universale: Nav menu
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Utilizzare Copilot con Azure Cosmos DB
Gestire i dati con Azure Cosmos DB Data Explorer
Utilizzare Container Queries nominali
Selettore CSS :has() e i suoi casi d'uso avanzati