Biblioteca .NET para consulta de endereços brasileiros através do CEP (Código de Endereçamento Postal), utilizando o serviço público ViaCEP. Para informações sobre ViaCEP, visite https://viacep.com.br/
$ dotnet add package Sirb.CepBrasilBiblioteca .NET para consulta de endereços brasileiros através do CEP (Código de Endereçamento Postal).
O Sirb.CepBrasil é uma biblioteca simples e eficiente para buscar informações de logradouro através do CEP (Código de Endereçamento Postal) utiliza uma estratégia inteligente de fallback entre múltiplos serviços públicos para garantir máxima disponibilidade.
Esta biblioteca utiliza serviços externos de APIs públicas brasileiras. A disponibilidade e precisão dos dados dependem destes provedores, não sendo responsabilidade deste projeto.
async/await com CancellationTokenHttpClientdotnet add package Sirb.CepBrasil
Ou via Package Manager:
Install-Package Sirb.CepBrasil
using Sirb.CepBrasil.Interfaces;
using Sirb.CepBrasil.Services;
// Instanciar o serviço
ICepService cepService = new CepService();
// Buscar CEP
var result = await cepService.FindAsync("01310100", CancellationToken.None);
if (result.Success)
{
Console.WriteLine($"CEP: {result.CepContainer.Cep}");
Console.WriteLine($"Logradouro: {result.CepContainer.Logradouro}");
Console.WriteLine($"Bairro: {result.CepContainer.Bairro}");
Console.WriteLine($"Cidade: {result.CepContainer.Cidade}");
Console.WriteLine($"UF: {result.CepContainer.Uf}");
Console.WriteLine($"Complemento: {result.CepContainer.Complemento}");
}
else
{
Console.WriteLine($"Erro: {result.Message}");
}
using var httpClient = new HttpClient
{
Timeout = TimeSpan.FromSeconds(10)
};
ICepService cepService = new CepService(httpClient);
var result = await cepService.FindAsync("01310100", CancellationToken.None);
// Program.cs ou Startup.cs
services.AddHttpClient<ICepService, CepService>();
// Controller ou Service
public class MeuService
{
private readonly ICepService _cepService;
public MeuService(ICepService cepService)
{
_cepService = cepService;
}
public async Task<string> ObterEndereco(string cep)
{
var result = await _cepService.FindAsync(cep, CancellationToken.None);
return result.Success
? $"{result.CepContainer.Logradouro}, {result.CepContainer.Cidade}"
: result.Message;
}
}
| Propriedade | Tipo | Descrição |
|---|---|---|
Success | bool | Indica se a busca foi bem-sucedida |
CepContainer | CepContainer | Objeto com os dados do endereço |
Message | string | Mensagem de erro (se houver) |
Exceptions | List<Exception> | Lista de exceções capturadas |
| Propriedade | Tipo | Descrição |
|---|---|---|
Cep | string | CEP formatado |
Logradouro | string | Nome da rua/avenida |
Complemento | string | Informações complementares |
Bairro | string | Nome do bairro |
Cidade | string | Nome da cidade |
Uf | string | Sigla do estado (ex: SP, RJ) |
graph TD
A[Usuário solicita CEP] --> B{Validação}
B -->|Inválido| C[Retorna erro]
B -->|Válido| D[Tenta BrasilAPI]
D -->|Sucesso| E[Retorna resultado]
D -->|Falha/Não encontrado| F[Tenta ViaCEP]
F -->|Sucesso| E
F -->|Falha/Não encontrado| G[Tenta AwesomeAPI]
G -->|Sucesso| E
G -->|Falha/Não encontrado| H[Tenta OpenCEP]
H -->|Sucesso| E
H -->|Falha| I{Erro em todas?}
I -->|Sim| J[Lança ServiceException]
I -->|Não encontrado| K[Retorna null]
A biblioteca implementa um fluxo robusto de tentativas múltiplas para garantir máxima confiabilidade:
| Cenário | Comportamento |
|---|---|
| Sucesso | Retorna o resultado encontrado imediatamente (não tenta próximo serviço) |
| CEP não encontrado | Tenta o próximo serviço na fila |
| Falha/Erro | Tenta o próximo serviço na fila |
| Erro em todos os serviços | Lança ServiceException com detalhes dos erros |
| Não encontrado em nenhum | Retorna null |
O CEP deve conter 8 caracteres numéricos. A biblioteca aceita CEPs com ou sem formatação:
0131010001310-100Success = false com mensagem descritivaServiceExceptionnullCancellationToken)Este projeto está licenciado sob a Licença MIT.
CancellationTokenContribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests no repositório GitHub.
Rodrigo Araujo Barbosa
Nota: Esta biblioteca utiliza o serviço externo ViaCEP. A disponibilidade e precisão dos dados dependem deste provedor.