Com o intuito de demonstrar proficiência na matéria em questão, foi solicitada a criação de uma Web-API REST que tivesse os seguintes comportamentos:
- Consumir ao menos duas Web-API's externas
- Conectar em um banco de dados
- Retornar os registros de uma tabela previamente criada no banco
O projeto realizado é uma simples API REST que possui os seguintes endpoints:
-
GET /zip/{zip} Este endpoint fará a consulta do CEP inputado na URL ( {zip} ) e devolverá as informações sobre o mesmo.
- Exemplo de requisição:
curl localhost:8080/zip/05520-200
- Exemplo de resposta:
{ "cep": "05520-200", "logradouro": "Avenida Professor Francisco Morato", "complemento": "de 4232 a 4886 - lado par", "bairro": "Vila Sônia", "localidade": "São Paulo", "uf": "SP", "ibge": "3550308", "gia": "1004", "ddd": "11", "siafi": "7107" }
-
GET /nationality/{name} Este endpoint fará a consulta do nome inputado na URL ( {name} ) e devolverá as informações sobre o mesmo.
- Exemplo de requisição:
curl localhost:8080/name/caio
- Exemplo de resposta:
{ "count": 1468, "name": "caio", "country": [ { "country_id": "BR", "probability": 0.24218256035817998 }, { "country_id": "IT", "probability": 0.21022431867452152 }, { "country_id": "AO", "probability": 0.19068948642360772 }, { "country_id": "PT", "probability": 0.14301595237998632 }, { "country_id": "JP", "probability": 0.024863386116953236 } ] }
-
GET /users Este endpoint listará os usuários existentes na tabela de usuários.
- Exemplo de requisição:
curl localhost:8080/users
- Exemplo de resposta:
[ { "id": 1, "name": "Gopher", "email": "[email protected]" }, { "id": 2, "name": "Halie", "email": "[email protected]" }, { "id": 3, "name": "Laurine", "email": "[email protected]" } ]
-
GET /users/{id} Este endpoint listará o usuário inputado na URL ( {id} ) e devolverá as informações sobre o mesmo.
- Exemplo de requisição:
curl localhost:8080/users/id
- Exemplo de resposta:
[ { "id": 1, "name": "Gopher", "email": "[email protected]" } ]
-
POST /users Este endpoint criará o usuário e devolverá as informações criadas sobre o mesmo.
- Exemplo de requisição:
curl -X POST -H "Content-Type: application/json" -d '{"name":"Caio Salgado Nepomuceno", "email":"[email protected]"}' http://localhost:8080/users
- Exemplo de resposta:
{ "id": 1, "name": "Caio Salgado Nepomuceno", "email": "[email protected]" }
-
PUT /users/{id} Este endpoint atualizará os dados do usuário inputado na URL ( {id} ) e devolverá as informações atualizadas sobre o mesmo.
- Exemplo de requisição:
curl -X PUT -H "Content-Type: application/json" -d '{"name":"Caio Salgado Nepomuceno", "email":"[email protected]"}' http://localhost:8080/users/1
- Exemplo de resposta:
{ "id": 1, "name": "Caio Salgado Nepomuceno", "email": "[email protected]" }
-
DELETE /users/{id} Este endpoint removerá o usuário inputado na URL ( {id} ).
- Exemplo de requisição:
curl -X DELETE http://localhost:3000/users/1
- Exemplo de resposta:
200 OK
- Golang 1.22
- Postgres 16.2
- Docker
- Docker Compose
- Env variables