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
Supportare la sessione affinity di Azure App Service con Application Gateway
Ottimizzare le performance usando Span<T> e il metodo Split
Montare Azure Blob Storage su Linux con BlobFuse2
Utilizzare l nesting nativo dei CSS
Creare una libreria CSS universale: Cards
Configurare lo startup di applicazioni server e client con .NET Aspire
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Proteggere le risorse Azure con private link e private endpoints
Change tracking e composition in Entity Framework
Eseguire query in contemporanea con EF
Gestione dell'annidamento delle regole dei layer in CSS
Implementare il throttle in JavaScript