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
Utilizzare Azure Cosmos DB con i vettori
Collegare applicazioni server e client con .NET Aspire
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Rendere le variabili read-only in una pipeline di Azure DevOps
Path addizionali per gli asset in ASP.NET Core MVC
Gestione dei nomi con le regole @layer in CSS
Creare una libreria CSS universale: Clip-path
Gestione degli stili CSS con le regole @layer
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Creare una libreria CSS universale: Nav menu
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Conoscere il rendering Server o WebAssembly a runtime in Blazor
I più letti di oggi
- Eseguire query in contemporanea con EF
- Fissare una versione dell'agent nelle pipeline di Azure DevOps
- .NET Aspire per applicazioni distribuite
- Utilizzare Locust con Azure Load Testing
- Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
- Repaint, Reflow e Compositing: Come Funziona il Rendering nel Browser
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!