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

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.

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in .Net, Dev and tagged , , , , .