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 le navigation property in QuickGrid di Blazor
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Applicare un filtro per recuperare alcune issue di GitHub
Migliorare l'organizzazione delle risorse con Azure Policy
Creare alias per tipi generici e tuple in C#
Creare un webhook in Azure DevOps
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Utilizzare QuickGrid di Blazor con Entity Framework