Git Product home page Git Product logo

viacep's Introduction

ViaCep

Um módulo para a consulta de endereços usando o Web Service da ViaCep.

Características

  • Fácil manipulação.
  • Retorna todos os formatos (Json, Xml, Piped, Querty).
  • Uso da Interface Fluent.
  • Uso de Callback Methods.

Como Utilizar

Primeiro você precisa instanciar um objeto da classe ViaCepService.

var viaCepService = ViaCepService.Default();

Existem duas formas de consultar endereços.

  • Consultando por Cep.

Crie um objeto do tipo Cep ou use uma string se preferir.

Cep cep = "01001000";

var endereco = viaCepService.ObterEndereco(cep); // viaCep.ObterEndereco("01001000");

Nesse caso o endereço será retornado como um objeto do tipo Endereco. Se desejar retornar como outros formatos:

var enderecoJson = viaCepService.ObterEnderecoComoJson(cep); //viaCepService.ObterEnderecoComoJson("01001000");

Você ainda pode retornar com Xml, Piped, ou Querty utilizando os métodos ObterEnderecoComoXml , ObterEnderecoComoPiped e ObterEnderecoComoQuerty, respectivamente, ambos métodos da classe ViaCepService.

  • Consultando por Endereco

A consulta também pode ser realizada a partir de três parâmetros: Sigla do estado, Nome da Cidade, e Nome do Logradouro.

var requisicao = new EnderecoRequisicao {
                    UF = UF.RS,
                    Cidade = "Porto Alegre",
                    Logradouro = "Olavo"
                };

var enderecos = viaCepService.ObterEnderecos(requisicao);

Neste exemplo será pesquisado na cidade de "Porto Algre/RS" por todos os logradouros que contenham "Olavo" em seu nome. Quando o nome da cidade ou do logradouro não contiver ao menos três caracteres será lançado uma Exception;

O resultado desta consulta é um IEnumerable<Endereco> contendo todos os resultados. Caso nenhum endereço seja encontrado uma lista vazia será retornada.

Use os métodos ObterEnderecosComoJson e ObterEnderecosComoXml, ambos da classe ViaCepService, para retornar os resultados nos formatos Json e Xml, respectivamente.

A classe ViaCepService também fornece métodos assíncronos.

var xml = await viaCepService.ObterEnderecoComoXmlAsync("01001000");
  • Fluent Interface

Para facilitar ainda mais as consultas utilize a Fluent Interface veja como é simples.

ViaCepFluent.RequisicaoPorCep
            .ComOsDados("01001000")
            .RetorneComoJson(Console.WriteLine);

A novidade é poder capturar e tratar qualquer Exception lançada.

var cep = "01001000";

await ViaCepFluent.RequisicaoPorCep
                  .ComOsDados(cep)
                  .Capture(e => Console.WriteLine($"Erro ao tentar consultar o endereço com o Cep {cep}. Descrição: {e.Message}"))
                  .RetorneComoEnderecoAsync(Console.WriteLine);

Você pode consultar mais sobre fluent aqui.

Injeção de Dependência

Simple Injector

Se você estiver utilizando o SimpleInjector:

var container = new SimpleInjector.Container();
container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();

container.Register<IViaCepService, ViaCepService>();
container.Register<IViaCepCliente, ViaCepCliente>();
container.Register<IEnderecoConvert, EnderecoConvert>();
container.Register<IViaCepRequisicaoPorCepFactory, ViaCepRequisicaoPorCepFactory>();
container.Register<IViaCepRequisicaoPorEnderecoFactory, ViaCepRequisicaoPorEnderecoFactory>();

container.RegisterMvcControllers(Assembly.GetExecutingAssembly());

DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));

Depois basta injetar a Dependência via Construtor.

public class EmpresaController : Controller
{
      private readonly IViaCepService _viaCepService;
      
      public EmpresaController(IViaCepService viaCepService)
      {
            _viaCepService = viaCepService;
      }
      
      public Task<ActionResult> Index()
      {
            var endereco = await _viaCepService.ObterEnderecoAsync("01001000");
            return View(endereco);
      }
}

IServiceCollection

Se você estiver utilizando o AspNet Core:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });
    
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    services.AddScoped<IViaCepService>(serviceProvider => ViaCepService.Default());
}

Dependências

Newtonsoft.Json >= 11.0.1

viacep's People

Contributors

brunospeedrun avatar mariohik avatar

Stargazers

 avatar Michel Silva avatar  avatar Caio Henrique Figurski avatar Larissa Braga da Paz avatar Davi Teixeira avatar Daniel Bichuetti avatar Gi Bordignon avatar Ti - Grupo Pasquali avatar Thiago Valim avatar fabio rezende avatar Johnnys Martins avatar Wesley Oliveira avatar Wellington Torrejais da Silva avatar Marco Giovanni avatar Flávio Tassan avatar José Cristiano - Automation Software avatar José Augusto Guimarães avatar Anderson Marinho avatar Rafael Palliarini Urréa avatar Ramiro Drumond avatar Anderson Oliveira de Queiroz avatar Antonio Ferreira avatar Raphael A. F. Cardoso avatar

Watchers

Anderson Marinho avatar James Cloos avatar Wesley Oliveira avatar  avatar

viacep's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.