Quando dobbiamo leggere il valore di un header della richiesta, in ASP.NET Core 6 abbiamo a disposizione diverse soluzioni.
Una di queste è sicuramente quella di andare a ispezionare l'HttpContext corrente, e più nello specifico, l'oggetto HttpRequest.
Ma l'alternativa di gran lunga più comoda è quella di lasciare quest'incombenza al motore di binding, e limitarci ad aggiungere un parametro decorato con l'attributo FromHeader:
[HttpGet] public IEnumerable<WeatherForecast> Get([FromHeader(Name = "X-MY-CUSTOM-HEADER")] string? someValue) { _logger.LogInformation("header received {header}", someValue); return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summary = Summaries[Random.Shared.Next(Summaries.Length)] }) .ToArray(); }
Questa modalità funziona sia nel caso dei classici controller, sia nel caso di Minimal API, come possiamo vedere dal codice in basso:
app.MapGet("/people/{id}", (ILogger<Program> logger, [FromHeader(Name = "X-MY-CUSTOM-HEADER")] string? someValue, int id) => { logger.LogInformation($"/people invoked with parameter {id} and header {someValue}"); if (id == 0) return Results.NotFound(); return Results.Json(new Person { Name = "Marco" }); });
Attenzione a ricordarci di dichiarare la string come nullable (quindi utilizzando il formato string?), altrimenti il routing considererà questo parametro come obbligatorio.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare un hash con SHA-3 in .NET
Limitare le richieste lato server con l'interactive routing di Blazor 8
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Triggerare una pipeline su un altro repository di Azure DevOps
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Creare una libreria CSS universale: Cards
Migliorare la sicurezza dei prompt con Azure AI Studio
Effettuare il binding di date in Blazor
Code scanning e advanced security con Azure DevOps
Testare l'invio dei messaggi con Event Hubs Data Explorer
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Eseguire script pre e post esecuzione di un workflow di GitHub
- Creare una libreria CSS universale: Cards
- Migliorare l'organizzazione delle risorse con Azure Policy