Como projeto de finalização do Módulo 04 da Resilia Educação em que tivemos que desenvolver propostas de APIs que seriam o MVP de um aplicativo, nós do Grupo 2 escolhemos o tema Escola e disso surgiu a Escola Mercúrio!
Esse repositório pode ser acessado no Heroku Clicando Aqui..
Nesse projeto eu fiquei responsável por criar uma API REST para a Escola Mercúrio, onde será possível realizar operações CRUD na entidade funcionarios
.
Projeto feito utilizando o Node.js e o framework Express e também tentando seguir o padrão MVC.
Também é um objetivo pessoal seguir as recomendações do Conventional Commits.
Esse projeto tem como objetivo criar uma API REST da Escola Mercúrio, onde será possível realizar operações CRUD na entidade funcionarios
.
Minha intenção é que a entidade funcionarios
possua os seguintes atributos:
- ID (Como Chave Primária)
- Nome
- CPF
- Telefone
- Data de Nascimento
- Cargo
- Data de Admissão
Para instalar e rodar a API localmente, abra seu terminal/powershell e rode os seguintes comandos:
Para clonar o repositório:
git clone git@github.com:Vastier/Resilia-M4-Escola-Mercurio-API.git
Para entrar na pasta que acabou de ser criada:
cd Resilia-M4-Escola-Mercurio-API
Para instalar os pacotes necessários:
npm install
Para iniciar o servidor da API:
npm start
Para iniciar o servidor em modo de desenvolvimento (usando o nodemon para atualizar caso hajam mudanças nos arquivos):
npm run dev
Caso tenha removido o arquivo database.db ou queira criar um e popular com dados de exemplo:
npm run create
- Caso use o é possível importar a collection pronta com todas as rotas, para isso importe o arquivo
EscolaMercurioAPI-Insomnia_Collection.json
.
-
GET
/funcionarios/todos
Retorna todos os funcionários no banco de dados.
Schema da resposta
{ "erro": <Boolean>, "ListaFuncionarios": [ { "ID": <Int>, "NOME": <String>, "CPF": <String>, "TELEFONE": <String>, "EMAIL": <String>, "DATA_DE_NASCIMENTO": <String>, "CARGO": <String>, "DATA_DE_ADMISSAO": <String> }, ] }
-
GET
/funcionarios/buscacpf={cpf}
Retorna o funcionário com o CPF especificado, caso seja encontrado no banco de dados.
Schema da resposta
{ "erro": <Boolean>, "Funcionário": [ { "ID": <Int>, "NOME": <String>, "CPF": <String>, "TELEFONE": <String>, "EMAIL": <String>, "DATA_DE_NASCIMENTO": <String>, "CARGO": <String>, "DATA_DE_ADMISSAO": <String> }, ] }
-
POST
/funcionarios/inserir
Insere um funcionário no banco de dados.
Dados a serem enviados no body via POST
Parâmetro Descrição "nome"
Nome do funcionário (string, obrigatório) "cpf"
CPF do funcionário (número de 11 digitos, obrigatório, aceita pontos e traços, deve ser um CPF válido e não cadastrado ainda) "telefone"
Telefone do candidato (número de telefone com DDD, obrigatório, aceita espaços, parênteses e traços) "email"
Email do funcionário (string, obrigatório, deve ser um email válido) "dataDeNascimento"
Data de Nascimento do funcionário (números no formato DD/MM/AAAA, opcional) "cargo"
Cargo do funcionário (string, obrigatório) "dataDeAdmissao"
Data de Admissão do funcionário (números no formato DD/MM/AAAA, opcional) Exemplo de body da requisição:
{ "nome": "Jão da Silva", "cpf": "836.799.020-00", "telefone": "(51) 99887-6432", "email": "jao.silva@example.com", "dataDeNascimento": "29/05/1980", "cargo": "Inspetor", "dataDeAdmissao": "05/03/2015" }
Exemplo de resposta:
{ "erro": false, "Resposta": "Funcionário de nome 'Jão da Silva' adicionado ao banco de dados com sucesso." }
-
PUT
/funcionarios/modificar/{id}
Modifica os dados do funcionário com o ID especificado, caso seja encontrado no banco de dados.
Dados a serem enviados no body via PUT, essa rota usa a mesma validação de dados da rota POST.
Parâmetro Descrição "nome"
Nome do funcionário (string, obrigatório) "cpf"
CPF do funcionário (número de 11 digitos, obrigatório, aceita pontos e traços, deve ser um CPF válido) "telefone"
Telefone do candidato (número de telefone com DDD, obrigatório, aceita espaços, parênteses e traços) "email"
Email do funcionário (string, obrigatório, deve ser um email válido) "dataDeNascimento"
Data de Nascimento do funcionário (números no formato DD/MM/AAAA, opcional) "cargo"
Cargo do funcionário (string, obrigatório) "dataDeAdmissao"
Data de Admissão do funcionário (números no formato DD/MM/AAAA, opcional) Exemplo de body da requisição:
{ "nome": "Jão da Silva Atualizado", "cpf": "994.279.600-27", "telefone": "(21) 99887-6432", "email": "jao.silva@example.com", "dataDeNascimento": "29/05/1980", "cargo": "Inspetor", "dataDeAdmissao": "03/05/2015" }
Exemplo de resposta:
{ "erro": false, "Resposta": "Dados do funcionário 'Jão da Silva Atualizado' atualizado com sucesso no banco de dados.", "Dados antigos": [ { "ID": 8, "NOME": "Jão da Silva", "CPF": "836.799.020-00", "TELEFONE": "(51) 99887-6432", "EMAIL": "jao.silva@example.com", "DATA_DE_NASCIMENTO": "29/05/1980", "CARGO": "Inspetor", "DATA_DE_ADMISSAO": "05/03/2015" } ], "Dados atualizados": [ { "ID": 8, "NOME": "Jão da Silva Atualizado", "CPF": "994.279.600-27", "TELEFONE": "(21) 99887-6432", "EMAIL": "jao.silva@example.com", "DATA_DE_NASCIMENTO": "29/05/1980", "CARGO": "Inspetor", "DATA_DE_ADMISSAO": "03/05/2015" } ] }
-
DELETE
/funcionarios/apagar/{id}
Apaga o funcionário com o ID especificado, caso seja encontrado no banco de dados.
Exemplo de resposta:
{ "erro": false, "Resposta": "Funcionário de ID 8 apagado com sucesso.", "Funcionário apagado": { "ID": 8, "NOME": "Jão da Silva Atualizado", "CPF": "994.279.600-27", "TELEFONE": "(21) 99887-6432", "EMAIL": "jao.silva@example.com", "DATA_DE_NASCIMENTO": "29/05/1980", "CARGO": "Inspetor", "DATA_DE_ADMISSAO": "03/05/2015" } }