Nello script precedente, ci siamo occupati del nuovo attributo ApiController in ASP.NET Core 2.1 e abbiamo visto come permetta la validazione automatica dei parametri di ingresso a una action Web API.
Ogni action può avere uno o più parametri che il model binder di ASP.NET Core valorizza attingendo da varie fonti della richiesta HTTP, come dal corpo o dall'URL. Usando l'attributo ApiController, la logica di selezione delle binding source viene ridefinita in questo modo:
- Nel caso di parametri di tipo base (es. int, DateTime, string, ...) i valori vengono cercati nella route o in query string;
- In caso di parametri di tipo complesso (es. ProductCreationModel), il valore viene deserializzato dal corpo JSON della richiesta.
Grazie a queste agevolazioni, non è più necessario annotare esplicitamente i parametri con gli attributi FromBody o FromRoute. Tuttavia, questo implica che l'action non sarà più in grado di ricevere dati da un form, ovvero da richieste inviate con Content-Type: application/x-www-form-urlencoded.
Per ovviare a questo problema possiamo annotare i parametri con l'attributo FromForm, come nel seguente esempio.
[HttpPost, Route("verify")] public ActionResult<VerificationResultDto> VerifyManufacturerCode([FromForm] string manufacturerCode) { //... }
In alternativa, possiamo disabilitare globalmente la nuova logica di selezione delle binding source agendo dalle opzioni.
services.Configure<ApiBehaviorOptions>(options => { options.SuppressInferBindingSourcesForParameters = true; });
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Generare token per autenicarsi sulle API di GitHub
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Elencare le container images installate in un cluster di Kubernetes
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Copiare automaticamente le secret tra più repository di GitHub
Implementare il throttling in ASP.NET Core
Utilizzare Tailwind CSS all'interno di React: installazione
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
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