Consultando Api´s com HttpClient no .NET 6
Nesta vida de desenvolvedor, consumir Api´s de terceiros sempre será necessário caso façamos integrações entre sistemas, para isto o meio mais indicado para começar é o uso do objeto HttpClient nativo da própria linguagem .NET.
Temos também inúmeras outras formas de comunicação, que podem ser com bibliotecas que podem facilitar a vida (veja este post Simplificando o consumo de API´s em C# com Refit | by Marcio Nizzola | Medium), mas que também possuem suas restrições e personalizações, mas é indispensável que um desenvolvedor .NET saiba o que é a biblioteca HttpClient e sua forma de utilização antes que saia por aí se aventurando com outras bibliotecas.
Nesta primeira parte do artigo, vamos aprender a utilizar da forma mais simples, chamando um serviço sem autenticação.
Vamos fazer um teste utilizando a Api de Cep disponível no site https://viacep.com.br/ que não é autenticada e dispõe apenas de método Get para obtenção do endereço.
Então de acordo com este código, vemos que na linha 6, declaramos um objeto do tipo HttpClient, que será responsável pela comunicação com a API.
já na linha 9, realizamos a chamada pelo método GetAsync, para o endereço que foi criado na variável “address”, a resposta será inserida no objeto response, que pertence ao tipo “HttpResponseMessage”.
Na linha 10, executamos o comando “EnsureSuccessStatusCode” para que uma exceção seja lançada caso a resposta de sucesso desta operação seja um “false”, pois conforme a imagem abaixo, a resposta é estruturada com as propriedades definidas no objeto “HttpResponseMessage”;
Já na linha 12, criamos uma string com a resposta obtida da API, que está contida na propriedade “Content” do objeto “Response”.
De posse desta resposta em forma de string, podemos simplesmente escrevê-la na tela, como feito neste código, utilizando Console.WriteLine, ou transformá-la num objeto tipado.
Então executando a nossa aplicação, vemos que seu funcionamento ocorreu com sucesso indicando a localidade de acordo com o cep indicado.
Então vamos fazer algo mais, para que possamos utilizar estas informações, o melhor caminho é a serialização delas em uma classe.
Vamos criar uma classe para utilização nesta consulta,
Então adicionamos a linha 19, com o comando de Deserialização utilizando a biblioteca System.Text.Json (nativa do .Net, muita gente ainda utiliza a biblioteca Newtonsoft.Json, que só indico caso haja alguma formatação diferenciada nas suas aplicações que exijam customização).
Pronto, podemos ver que nosso objeto foi criado com as propriedades deserializadas e prontas para serem utilizadas.
Ok, mas e se quisermos criar as propriedades da classe com as letras iniciais em maiúsculas ? Vamos mudar uma parte só para ver se isto funciona ?
Executando a aplicação, vemos que as coisas não sairam como desejado, por que ?
Neste caso temos que configurar as propriedades de serialização, para que a biblioteca System.Text.Json saiba interpretar o objeto de forma a aceitar propriedades com as letras iniciais diferentes.
Sendo assim, observe o código abaixo, onde foi criado o objeto “myJsonOptions” que fará a configuração utilizando a propriedade ‘PropertyNameCaseInsensitive” funcionar, setando-a para true.
E já na linha 24, utilizaremos este objeto para realizar a configuração do deserializador, agora fazendo com que leia a propriedade.
Pronto !! agora a aplicação está reconhecendo as propriedades tipadas no padrão iniciando em maiúsculas também !!
Referências :