Esta é uma api que consume os dados da API externa de localizações do IBGE e consegue e reorganizar seus dados em um formato mais simples, e também consegue filtrar resultados a partir de query params (parametros de URL) e resolve o problema da api de listagem de municipios do IBGE na qual não tem nenhum filtro para buscas.
Para a utilização da mesma é necessaria a instalação das dependencias AXIOS e SEQUELIZE, também é necessario ter o NODE.js instalado na maquina.
Pasta raiz que contém a index que roda o servidor express
Pasta que contém a classe CitiesControllers que recebe a data filtrada e realiza a checagem dos erros de uso
Pasta que contém a classe Models que é responsavel por pegar a data bruta da API externa do IBGE usando o módulo AXIOS
Contem a index que usa o express para trazer os resultados em json e tambem usa a rota de Cities que é a rota /api/cities em que é o endereço que usamos para fazer as requisições
É a pasta que faz todo o trabalho de formatação da API do IBGE e a filtragem dos seus dados, a classe FormateDataServices pega os dados brutos da pasta de Models e a formata para o modelo da API e a classe Services realiza a filtragem dos dados de acordo com os parametros de URL(Query Params).
Ao baixar a API realize o comando no terminal
'npm install'
para instalar as dependências do projeto e logo após execute o comando para rodar a api que por padrão é
'node api/index.js'
e logo após isso você já pode realizar as requisições usando seu navegador ou o POSTMAN se preferir.
Você pode realizar as requisições sem nenhum parametros que ira listar todas as cidades, ou com filtros para UF, nome da cidade, estado e região.
Para realizar requisições sem parametros basta acessar a rota 'api/city' que por padrão é
localhost:3000/api/city
também pode filtrar pelos seguintes parametros de URL:
localhost:3000/api/city?uf=UF -- UF de 2 letras de cada estado mostrando resultados apenas se as 2 letras forem maiusculas
localhost:3000/api/city?name=cidade -- retorna a cidade com o nome ou as que contém a palavra listada, não é case sensitive mas diferencia acentos
localhost:3000/api/city?state=estado -- retorna o estado com o nome ou o que contem parte dele listado, não é case sensitive mas diferencia acentos
localhost:3000/api/city?region=regiao -- retorna a regiao com o nome ou a que contém palavra dele listada, não é case sensitive mas diferencia acentos
as requisições voltam no seguinte formato:
{
"id": 2300101,
"name": "Abaiara",
"state": "Ceará",
"uf": "CE",
"region": "Nordeste"
},
Caso você tente pesquisar uma UF com mais de 2 ou menos de 2 letras obterá o codigo de status 400(Bad Request)e o seguinte erro:
{
"message": "the uf field must have only two letters"
}
Caso tente pesquisar uma UF com 1 ou mais letras minúsculas obterá o codigo de status 400(Bad Request)e o seguinte erro:
{
"message": "invalid uf field, its value must be upper case"
}
Caso tente pesquisar uma uf, estado, cidade ou região que não existe obterá o codigo de status 404(Not Found)e o seguinte erro:
{
"message": "no city was found with the given parameters"
}