Extraindo valores do header de uma requisição. (#csharp #webapi #dotnet #dev)

Extraindo valores do header de uma requisição. (#csharp #webapi #dotnet #dev)

Overview

Navegar na vastidão do desenvolvimento web pode muitas vezes parecer uma jornada enigmática. Felizmente, neste post, deciframos um dos enigmas mais comuns enfrentados por desenvolvedores: como extrair valores do header em controllers no Dotnet Core 3.1. Através de exemplos claros e instruções passo a passo, este guia é o farol que você precisava para dominar o manejo de headers e levar suas habilidades de programação a novas alturas. Vamos embarcar juntos nesta aventura de conhecimento!

Neste post mostro como extrair valores do header, quando sua controller receber uma requisição.

Enquanto estiver no escopo do método da controller, você consegue acessar uma variável chamada Request (pelo menos no dotnet core 3.1). Ela possui os dados da requisição, incluindo os headers.

Considere o método abaixo:

public async Task<IActionResult> Get([FromQuery] DateTimeRange dateTimeRange)
{
	return Ok(await _service.GetByDateRange(dateTimeRange));
}

Vamos supor que você qeur extrair o valor de um header chamado “x-requester-id”. Para isso, você pode:

var userCode = Request.Headers["x-requester-id"];

Este comando vai retornar uma variável do tipo StringValue contendo o valor que foi enviado. Todavia, se esta chave não existir no header, uma exception será lançada.

Uma forma de extrair estes valores de forma mais controlada seria:

var exists = Request.Headers.TryGetValue("x-requester-id", out var value);

Desta forma, se exists for false, então o valor não existe nos headers.

Existem outras duas propriedades do Headers que podem te ajudar a ver/extrair dados:

  1. Request.Headers.Keys: Retorna uma lista (ICollection<string>) com as chaves que estão disponíveis no header;
  2. Request.Headers.Values: Retorna uma lista (ICollection<string>) com valores que estão disponíveis no header;

Os valores das duas propriedades acima são alinhados, ou sjea, se o primeiro valor de Keys corresponde ao primeiro valor de Values.

Espero ter ajudado.