{"id":18069202,"url":"https://github.com/viniciussanchez/viacep","last_synced_at":"2025-04-05T16:18:34.953Z","repository":{"id":45036633,"uuid":"192820765","full_name":"viniciussanchez/viacep","owner":"viniciussanchez","description":"ViaCEP - Consulte CEPs de todo o Brasil","archived":false,"fork":false,"pushed_at":"2025-01-09T23:41:26.000Z","size":806,"stargazers_count":61,"open_issues_count":0,"forks_count":22,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-02-11T12:53:47.554Z","etag":null,"topics":["brasil","cep","consulta","consulta-cep","delphi","viacep","viacep-api"],"latest_commit_sha":null,"homepage":"https://viacep.com.br/","language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viniciussanchez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-20T00:15:43.000Z","updated_at":"2025-01-14T22:10:31.000Z","dependencies_parsed_at":"2022-08-25T14:51:45.048Z","dependency_job_id":null,"html_url":"https://github.com/viniciussanchez/viacep","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viniciussanchez%2Fviacep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viniciussanchez%2Fviacep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viniciussanchez%2Fviacep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viniciussanchez%2Fviacep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viniciussanchez","download_url":"https://codeload.github.com/viniciussanchez/viacep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361705,"owners_count":20926643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brasil","cep","consulta","consulta-cep","delphi","viacep","viacep-api"],"created_at":"2024-10-31T08:09:35.351Z","updated_at":"2025-04-05T16:18:34.938Z","avatar_url":"https://github.com/viniciussanchez.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ViaCEP - Consulte CEP de todo o Brasil\n![Delphi Supported Versions](https://img.shields.io/badge/Delphi%20Supported%20Versions-XE%20and%20ever-blue.svg)\n![Platforms](https://img.shields.io/badge/Platforms-Win32%20and%20Win64-red.svg)\n![Compatibility](https://img.shields.io/badge/Compatibility-VCL,%20Firemonkey%20DataSnap%20and%20uniGUI-brightgreen.svg)\n\n## Pré-requisitos\n * `[Opcional]` Para facilitar o gerenciamento de dependências, eu recomendo utilizar o Boss.\n   * [**Boss**](https://github.com/HashLoad/boss) - Gerenciador de dependências para Delphi\n * Possuir as dlls **libeay32.dll** e **ssleay32.dll** na pasta do projeto junto ao executável.\n \n## Instalação utilizando o Boss\n```\nboss install github.com/viniciussanchez/viacep\n```\n\n## Instalação manual\nAdicione a seguinte pasta no seu projeto em *Project \u003e Options \u003e Resource Compiler \u003e Directories and Conditionals \u003e Include file search path*\n```\n../viacep/src\n```\n\n## Começando\nVocê vai precisar fazer o uses das seguintes units: `ViaCEP.Intf`, `ViaCEP.Core`, `ViaCEP.Model`\n```pascal\nuses ViaCEP.Intf, ViaCEP.Core, ViaCEP.Model;\n```\n\n### Validando um CEP\nQuando consultado um CEP de formato inválido, por exemplo: `950100100` (9 dígitos), `95010A10` (alfanumérico), `95 01010` (espaço), o retorno será `nil`. \n\nO método de validar se é um CEP válido ou não, apenas certifica-se de que o CEP informado possui `8` dígitos e que todos sejam numéricos, podendo ser acessado antes de consultar o webservice por meio da interface `IViaCEP`, utilizando o método `Validate`.\n\nQuando consultado um CEP de formato válido, porém inexistente, por exemplo: `99999999`, o retorno também será `nil`. Isso significa que o CEP consultado não foi encontrado na base de dados.\n\nExemplo:\n```pascal\nvar\n  ViaCEP: IViaCEP;\nbegin\n  ViaCEP := TViaCEP.Create;\n  if ViaCEP.Validate('01001000') then\n    ShowMessage('CEP válido')\n  else\n    ShowMessage('CEP inválido');\nend;\n```\n\nVale lembrar que no método acima, não é necessário destruir a instância criada da classe `TViaCEP`, pelo fato de estar utilizando uma `Interface`.\n\n### Consultando um CEP\n```pascal\nvar\n  ViaCEP: IViaCEP;\n  CEP: TViaCEPClass;\nbegin\n  ViaCEP := TViaCEP.Create;\n  // Aqui você pode chamar a rotina para validar se é um CEP válido.\n  CEP := ViaCEP.Get(edtCEPConsultar.Text);\n  if not Assigned(CEP) then\n    Exit; // Aqui você pode exibir uma mensagem para o usuário falando que o CEP não foi encontrado.\n  try\n    edtJSON.Lines.Text := CEP.ToJSONString;\n    edtCEP.Text := CEP.CEP;\n    edtLogradouro.Text := CEP.Logradouro;\n    edtComplemento.Text := CEP.Complemento;\n    edtBairro.Text := CEP.Bairro;\n    edtLocalidade.Text := CEP.Localidade;\n    edtUF.Text := CEP.UF;\n    edtDDD.Text := CEP.DDD;\n    edtIBGE.Text := CEP.IBGE;\n    edtGIA.Text := CEP.GIA;\n  finally\n    CEP.Free;\n  end;\nend;\n```\n\n### Retorno da consulta no formato JSON\nApós realizar a consulta do CEP, você pode pegar o conteúdo retornado no formato JSON utilizando a método **.ToJSONString** disponível na classe `TViaCEPClass`. Veja o exemplo abaixo, onde é populado um `TMemo` com o conteúdo da consulta:\n```pascal\nvar\n  CEP: TViaCEPClass;\nbegin\n  Memo.Lines.Text := CEP.ToJSONString;\nend;\n```  \n```\n{\n  \"cep\": \"01001-000\",\n  \"logradouro\": \"Praça da Sé\",\n  \"complemento\": \"lado ímpar\",\n  \"bairro\": \"Sé\",\n  \"localidade\": \"São Paulo\",\n  \"uf\": \"SP\",\n  \"ddd\": \"\",\n  \"ibge\": \"3550308\",\n  \"gia\": \"1004\"\n}\n```\n\n## Achou um CEP desatualizado?\nAcesse o formulário e atualize on-line: [**Atualizar CEP**](https://viacep.com.br/cep/) \n\n## Links úteis\nOrigem código IBGE dos municípios: [**Acessar Site**](https://cidades.ibge.gov.br/) \n\nOrigem código GIA/ICMS (apenas SP disponível): [**Visualizar PDF (Pág.137)**](https://portal.fazenda.sp.gov.br/servicos/gia/Downloads/pre_formatado_ngia_v0210_gia0801.pdf)\n\nViaCEP - Webservice CEP e IBGE gratuito: [**Acessar Site**](https://viacep.com.br/) \n\n![viacep](img/Screenshot_1.png) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviniciussanchez%2Fviacep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviniciussanchez%2Fviacep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviniciussanchez%2Fviacep/lists"}