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
Usare Docusaurus per creare un sito di documentazione
Sfruttare i tag nell'output cache di ASP.NET Core 7
Parallelizzare le chiamate HTTP con async/await e le Promise in JavaScript
Miglioramenti alla leggibilità delle Media Query con le specifiche di livello 4
Eliminare spazio inutilizzato in un Azure Container Registry
Usare Azure Application Gateway come reverse proxy per ASP.NET Core
Creare automaticamente una pipeline YAML da una sua definizione in Azure DevOps
Utilizzare l'attributo HTML inert per disabilitare gli eventi
Monitorare e prevenire problemi in produzione
Filtrare le chiamate HTTP ad un App Service in base al servizio Azure
Utilizzo di Map e Object in Javascript