O ViaCep é um WebService gratuito para consulta de CEP do Brasil, e é bastante útil pois retorna o endereço sempre de forma padronizada.
Exemplo de Retorno
Neste post, irei demonstrar como implementei o consumo dessa API em meu sistema de cadastro para preencher automaticamente o endereço a partir do CEP.
Interface do Serviço
Primeiro, é necessário criar a interface do serviço.
Esta interface define dois métodos que compõem esse serviço:
- ValidarCep: Importante para validar o CEP recebido da requisição.
- RecuperarEndereco: É uma
Task
que recebe uma stringcep
e retorna um objetoEnderecoJson
. Este método possui toda a lógica de consumo da API.
Definição do Objeto EnderecoJson
O objeto EnderecoJson
é um record utilizado para mapear o retorno da consulta da API.
O atributo JsonPropertyName
é usado para especificar o nome da propriedade JSON que deve ser mapeada para o campo ou propriedade correspondente na classe ou record.
Implementação do Serviço
Ao criar a classe, precisamos implementar a interface IViaCep
.
Detalhes da Implementação
Método ValidarCep
Este método verifica se o CEP não é nulo e possui exatamente 8 caracteres.
O método retorna true
se as duas condições forem atendidas: a string não for nula e seu tamanho for igual a 8.
Método RecuperarEndereco
Dentro do método RecuperarEndereco
, validamos o CEP antes de prosseguir com a requisição.
Agora criamos uma instância de HttpClient
:
A classe HttpClient
é usada para enviar solicitações HTTP e receber respostas de recursos web. Utilizamos using
para garantir que o objeto HttpClient
seja corretamente descartado (liberado da memória) assim que ele não for mais necessário.
Fazemos a requisição:
Perceba que a string cep
, recebida via parâmetro, está interpolada na URL da requisição. Utilizamos GetAsync
, que envia uma requisição HTTP GET para o URI especificado.
Tratamos a resposta:
Lemos o conteúdo da resposta HTTP como uma string.
Com o conteúdo lido, transformamos o JSON em objeto:
Utilizamos a classe JsonSerializer
para desserializar a string JSON em um objeto do tipo EnderecoJson
.
Por fim, retornamos esse objeto:
Com esta implementação, você pode consumir o serviço ViaCep em seu sistema de cadastro para preencher automaticamente o endereço a partir do CEP fornecido.
Exemplo de Uso
Primeiro, temos que adicionar o serviço no container de injeção de dependência.
Em seguida, injetamos o serviço no caso de uso:
Agora o serviço está pronto para ser utilizado. Veja um exemplo de uso dentro de um método que preenche endereços automaticamente a partir de uma requisição:
Com essa abordagem, você garante que o endereço será preenchido automaticamente, melhorando a eficiência e precisão no cadastro de endereços em seu sistema.