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 il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Utilizzare Hybrid Cache in .NET 9
Gestione CSS in Blazor con .NET 9
Il nuovo controllo Range di Blazor 9
Gestione degli eventi nei Web component HTML
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Gestire il colore CSS con HWB
Gestire la cancellazione di una richiesta in streaming da Blazor
Utilizzare Copilot con Azure Cosmos DB