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
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Utilizzare il trigger SQL con le Azure Function
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Change tracking e composition in Entity Framework
.NET Conference Italia 2024
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Utilizzare l nesting nativo dei CSS
Referenziare un @layer più alto in CSS