- Sobre
- Especificações do Desafio
- Requisitos Obrigatórios
- Tecnologias Utilizadas
- Instalação
- Endpoints
- Swagger
📡 API Rest em Node.js utilizando o framework NestJS e banco de dados Postgres.
A API possui endpoint que realiza a verificação do status de um determinado número de CPF em uma blacklist. Também conta com outros endpoints para adicionar, remover CPF e realizar algumas consultas especificas dos CPFs registrados na blacklist.
Desenvolva uma aplicação Node.js que seja acessível localmente e verifique se um determinado número de CPF está em uma Blacklist.
Ser acessível como serviço através de endpoints que permitam:
-
Consultar a situação do CPF informado, retornando FREE se o CPF não estiver na Blacklist e BLOCK se o CPF estiver na Blacklist;
-
Incluir um cpf na Blacklist;
-
Remover um cpf na Blacklist;
Aceitar uma rota de suporte (exemplo: http://127.0.0.1:3000/status), que retorne:
-
As informações de uptime do servidor;
-
Quantidade de consultas realizadas desde o último restart;
-
Quantidade de CPFs na blacklist.
☑ As chamadas diretas ao endpoint, devem retornar em formato JSON;
☑ Validação do CPF/máscara na consulta e inclusão; Utilização do Node.js 12 ou superior na construção dos recursos;
☑ Criação de testes unitários;
☑ Criação de um arquivo README descrevendo detalhadamente as dependências e como o projeto foi estruturado;
☑ Utilização de containers Docker para construção do ambiente (incluir Dockerfile e qualquer outra dependência para execução no projeto)
-
🧩 Tecnologias
-
Comando para subir o projeto:
sudo docker-compose up -d --build --force recreate
Com a API em funcionamento, vamos rodar os testes conforme as especificações que foram pedidos para o desafio via Insomnia (ou algum similar).
Um ponto importante é que para testar as rotas deverá gerar um CPF válido, do contrário ocorrerá erros.
Gerador de CPF: https://www.4devs.com.br/gerador_de_cpf
POST:
-
Incluir CPF na blacklist - rota: http://localhost:3080/blacklist
Preencher o JSON, conforme exemplo:{ "cpf":"818.540.137-34" }
RETORNO:
{ "id": 17, "cpf": "818.540.137-34", "updatedAt": "2022-01-02T00:48:09.149Z", "createdAt": "2022-01-02T00:48:09.149Z" }
- Caso o CPF já tenha sido adicionado na blaklist, será retornado um erro HTTP 404 - Bad Request e uma mensagem "CPF Already Exists!"
GET:
-
Consultar CPF na blacklist - rota: http://localhost:3080/blacklist/818.540.137-34
Possíveis retornos no JSON:
- Caso o CPF informado esteja na blacklist será retornado um status "BLOCK"
{ "status": "BLOCK" }
- Caso o CPF informado não esteja na blacklist será retornado um status "FREE".
{ "status": "FREE" }
DELETE:
-
Deleta um CPF da blacklist - rota: http://localhost:3080/blacklist/818.540.137-34
- Caso o CPF informado esteja na blacklist será lançado um código HTTP 200-OK e retornado uma mensagem "CPF successfully removed!"
{ "message": "CPF successfully removed!" }
- Caso o CPF informado não esteja na blacklist, será lançado um código HTTP 404-Bad Request e será retornado uma mensagem "CPF does not exist on the blacklist!".
{ "message": "CPF does not exist on the blacklist!" }
GET:
-
Rota de Suporte - rota: http://localhost:3080/status/
Será retornado um JSON com as seguintes informações:- Tempo de atividade do servidor.
- Quantidade de consultas realizadas desde último restart.
- Quantidade de CPFs que estão registrados na blaklist.
{ "uptime_server": "00:00:17", "quantity_consults": 1, "quantity_cpf": 5 }
Para visualizar a documentação do projeto no swagger acessar a rota: http://localhost:3080/