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
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Generare file PDF da Blazor WebAssembly con iText
Utilizzare Tailwind CSS all'interno di React: primi componenti
Usare le variabili per personalizzare gli stili CSS
Assegnare un valore di default a un parametro di una lambda in C#
Specificare il versioning nel path degli URL in ASP.NET Web API
Migrare una service connection a workload identity federation in Azure DevOps
Copiare automaticamente le secret tra più repository di GitHub
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Creare form tipizzati con Angular
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Come migrare da una form non tipizzata a una form tipizzata in Angular
I più letti di oggi
- Impostare un elemento come ridimensionabile tramite CSS
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Personalizzare l'errore del rate limiting middleware in ASP.NET Core
- Accedere alla console di una Azure Container App
- Modificare i metadati nell'head dell'HTML di una Blazor Web App
- Gli oggetti CallOut di Expression Blend 4.0
- SQL Server 2005 December CTP
- Sfruttare le nuove tipologie di input di HTML5 con ASP.NET 4.0
- Upload da una pagina web con Dundas Upload