Gocep
Um simples pacote para buscar ceps em bases públicas na internet utilizando concorrência. Você também pode extender e buscar sua própria base de Ceps se desejar. Está configurado para buscar em: viacep, postmon cep, republicavirtual, Correio, github api.cep, cdn api cep.
Install / Use
/learn @jeffotoni/GocepREADME
gocep
<!-- [](https://snyk.io/test/github/jeffotoni/gocep) -->Um simples pacote para buscar ceps em bases públicas na internet utilizando concorrência. Atualizamos para buscar não somente de bases públicas como também busca do correios que é chamadas SOAPs e busca também de uma base que encontra-se no ceps github em raw.
Você também pode extender e buscar sua própria base de Ceps se desejar consultar em sua própria base de dados.
Está configurado para buscar em:
- viacep
- Postmon cep
- Republicavirtual
- Correio
- github Raw Cep
- Cdn api cep
- Brasil Api
Podendo implementar para ter uma saída ainda mais completa conforme sua necessidade, então fique a vontade em alterar conforme seu cenário.
O server é extremamente rápido, e usa cache em memória ele está configurado para 2G de Ram, caso queira alterar está tudo bonitinho no /config.
Fazendo chamadas do gocep em outras Langs
Da uma conferida em alguns examplos aqui de como fazer chamadas do gocep em diversas linguagens:
- nodejs
- python
- php
- javascript
- go lib
- go server
- go client
- rust
- C
- C++
Você pode fazer seu próprio build usando Go, ou você poderá utilizar docker-compose. O server irá funcionar na porta 8080, mas caso queira alterar basta ir na pasta /config.
Para subir o serviço para seu Servidor ou sua máquina local basta compilar, e a porta 8080 será aberta para consumir o endpoint /v1/cep/{cep}
Tudo muito legal não é ?? ❤️😍😍
Install gocep
Caso queira utilizar ele como serviço, basta baixa-lo ou usar o docker para utilizado.
linux bash
$ git clone https://gocep
$ cd gocep
$ CGO_ENABLED=0 go build -ldflags="-s -w"
$ ./gocep
$ 2020/04/21 12:56:46 Port: 0.0.0.0:8080
docker e docker-compose
Deixei um script para facilitar a criação de sua imagem, todos os arquivos estão na raiz, docker-compose.yaml, Dockerfile tudo que precisa para personalizar ainda mais se precisar.
version: '3.5'
services:
gocep:
image: jeffotoni/gocep
container_name: gocep
hostname: gocep
domainname: gocep.local.com
environment:
- "TZ=America/Sao_Paulo"
- "API_ENV=prod"
networks:
guulawork:
aliases:
- gocep.local.com
ports:
- 8080:8080
restart: always
networks:
guulawork:
driver: bridge
Ao rodar o script ele irá fazer pull da imagem que encontra-se no hub.docker.
$ make compose
Listando service
$ docker-compose ps
Creating gocep ... done
Name Command State Ports
------------------------------------------------
gocep /gocep Up 0.0.0.0:8080->8080/tcp
-e Generated Run docker-compose [ok]
Executando sua API
$ curl -i -XGET http://localhost:8080/v1/cep/08226021
HTTP/1.1 200 OK
Content-Type: application/json
Date: Sun, 19 Feb 2023 13:15:03 GMT
Content-Length: 112
{
"cidade":"São Paulo",
"uf":"SP",
"logradouro":"18 de Abril",
"bairro":"Cidade Antônio Estevão de Carvalho"
}
Docker
Também poderá usar o Docker se desejar
$ docker run --name gocep --rm -p 8080:8080 jeffotoni/gocep:latest
2023/02/19 17:12:03 Server Run Port 0.0.0.0:8080
2023/02/19 17:12:03 /v1/cep/:cep
$ curl -i -XGET http://localhost:8080/v1/cep/08226021
HTTP/1.1 200 OK
Content-Type: application/json
Date: Sun, 19 Feb 2023 13:15:03 GMT
Content-Length: 112
{
"cidade":"São Paulo",
"uf":"SP",
"logradouro":"18 de Abril",
"bairro":"Cidade Antônio Estevão de Carvalho"
}
Usar como Lib
Gocep também poderá ser usado como Lib, ou seja você irá conseguir fazer um import em seu pkg/searchcep e fazer a chamada direto do seu método em seu código.
package main
import (
"fmt"
"github.com/jeffotoni/gocep/pkg/cep"
)
func main() {
result, wecep, err := cep.Search("6233903")
fmt.Println(err)
fmt.Println(result) // json
fmt.Println(wecep) // object WeCep
}
Ou se preferir for criar seu próprio serviço em Go e sua api basta fazer como exemplo abaixo:
Criando seu próprio WebServer usando gocep
package main
import (
"log"
"net/http"
"fmt"
"github.com/jeffotoni/gocep/pkg/cep"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/cep/", func(w http.ResponseWriter, r *http.Request){
w.Header().Add("Content-Type", "application/json")
cepstr := strings.Split(r.URL.Path[1:], "/")[1]
if len(cepstr) != 8 {
w.WriteHeader(http.StatusBadRequest)
return
}
result, wecep, err := cep.Search(cepstr)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(result))
return
}
if !cep.ValidCep(wecep) {
w.WriteHeader(http.StatusNoContent)
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte(result))
})
log.Fatal(http.ListenAndServe("0.0.0.0:8080"))
}
Temos uma estrutura padrão de retorno do JSON.
Struct Go
type WeCep struct {
Cidade string `json:"cidade"`
Uf string `json:"uf"`
Logradouro string `json:"logradouro"`
Bairro string `json:"bairro"`
}
Saida Json
{
"cidade":"",
"uf":"",
"logradouro":"",
"bairro":""
}
Related Skills
node-connect
340.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
340.5kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
84.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
340.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
