Projeto do curso de desenvolvimento web full stack da Resília que consiste em criar uma API Rest utilizando CRUD e a estrutura de organização MVC. Tem como finalidade armazenar e gerenciar informações de um hotel.
O projeto foi desenvolvido utilizando as seguintes tecnologias:
São as dependências necessárias para o funcionamento do projeto
"dependencies": {
"dotenv": "^16.0.1",
"express": "^4.18.1",
"path": "^0.12.7",
"sqlite3": "^5.0.10",
"url": "^0.11.0"
}
São as dependências utilizadas no desenvolvimento do projeto
"devDependencies": {
"jest": "^28.1.3",
"nodemon": "^2.0.19"
Clone o projeto
git clone https://github.com/ramomfrz/ProjetoM4Resilia.git
Entre no diretório do projeto
cd ProjetoM4Resilia
Instale as dependências
npm i
Inicie o servidor
npm run start
O servidor está como padrão para rodar na porta 3000, porém se for necessário é possivel alterar no .env.
O projeto utiliza os verbos HTTP (GET, POST, PUT, DELETE) nas 5 entidades criadas para esta API. Elas estão divididas em: QUARTOS, RESERVAS, FUNCIONÁRIOS, HOSPEDES e LIMPEZA. Cada entidade possui 5 rotas que são:
- GET: URL_DA_API / "nome da entidade"
- GET: URL_DA_API / "nome da entidade"/ {id}
- POST: URL_DA_API / "nome da entidade"
- PUT: URL_DA_API / "nome da entidade"/ {id}
- DELETE: URL_DA_API / "nome da entidade"/ {id}
A entidade HOSPEDES utiliza o cpf no lugar do id:
- GET: URL_DA_API / hospedes/ {CPF}
- PUT: URL_DA_API / hospedes/ {CPF}
- DELETE: URL_DA_API / hospedes/ {CPF}
É possível retornar tanto todos os registros de uma entidade quanto registros específicos de cada uma. Na entidade hospedes, para retornar um registro específico, utiliza-se o cpf, nas demais entidades o id.
[
{
"id": 1,
"numeroQuarto": "115",
"nomeHospedes": "Exemplo",
"controle": 1,
"telefone": "664317425"
},
{
"id": 2,
"numeroQuarto": "123",
"nomeHospedes": "Exemplo",
"controle": 0,
"telefone": "231247425"
}
]
[
{
"id": 1,
"numeroQuarto": "115",
"nomeHospedes": "Exemplo",
"controle": 1,
"telefone": "664317425"
}
]
[
{
"id": 1,
"nome": "Mariana Silva",
"data_admissao": "15/05/2022"
},
{
"id": 2,
"nome": "João Silva",
"data_admissao": "20/05/2022"
}
]
{
"id": 3,
"nome": "Jane Doe",
"data_admissao": "25/05/2022"
}
[
{
"cpf": "12345678912",
"nome": "José Silva",
"numeroQuarto": "4",
"telefone": "199874671"
},
{
"cpf": "12345678913",
"nome": "João Pedro",
"numeroQuarto": "6",
"telefone": "199874622"
}
]
{
"cpf": "12345678928",
"nome": "Joana Almeida",
"numeroQuarto": "5",
"telefone": "199874627"
}
[
{
"id": 1,
"CPF": "12345678912",
"nome": "Ramom Silva",
"numeroQuarto": "4",
"dataEntrada": "01/01/22",
"dataSaida": "10/01/22"
},
{
"id": 2,
"CPF": "12345678918",
"nome": "Rita Silva",
"numeroQuarto": "8",
"dataEntrada": "01/01/22",
"dataSaida": "10/01/22"
}
]
{
"id": 1,
"CPF": "12345678912",
"nome": "Ramom Silva",
"numeroQuarto": "4",
"dataEntrada": "01/01/22",
"dataSaida": "10/01/22"
}
[
{
"id": 1,
"numeroQuarto": "3008",
"controle": 1,
"id_funcionario": "2",
"dataEntrada": "04/08/22"
},
{
"id": 3,
"numeroQuarto": "3000",
"controle": 1,
"id_funcionario": "1",
"dataEntrada": "04/08/22"
}
]
{
"id": 1,
"numeroQuarto": "3008",
"controle": 1,
"id_funcionario": "2",
"dataEntrada": "04/08/22"
}
❗ É importante que os atributos do POST sejam do tipo certo:
- controle, numeroQuarton id_funcionario --> Number
- nomeHospede, data_admissao, dataEntrada, dataSaida --> String
- telefone --> String, no máximo 9 dígitos
- cpf --> String, exatamente 11 dígitos
{
"numeroQuarto": 115,
"nomeHospede": "Exemplo",
"controle": 1,
"telefone": "664317425"
}
{
"Mensagem": "Registro incluído no sistema com sucesso!"
}
{
"nome": "Mariana Silva",
"data_admissao": "15/05/2022"
}
{
"Mensagem": "Registro incluído no sistema com sucesso!"
}
{
"cpf": "12345678912",
"nome": "José Silva",
"numeroQuarto": 4,
"telefone": "199874671"
}
{
"Mensagem": "Registro incluído no sistema com sucesso!"
}
{
"CPF":"12345678912",
"nome": "Ramom Silva",
"numeroQuarto": 4,
"dataEntrada": "01/01/22",
"dataSaida": "10/01/22"
}
{
"Mensagem": "Registro incluído no sistema com sucesso!"
}
{
"numeroQuarto": 447,
"controle": 1,
"id_funcionario": 236,
"data": "24/05/2022"
}
{
"Mensagem": "Registro incluído no sistema com sucesso!"
}
❗ É importante que os atributos do POST sejam do tipo certo:
- controle, numeroQuarto, id_funcionario --> Number
- nomeHospede, data_admissao, dataEntrada, dataSaida --> String
- telefone --> String, no máximo 9 dígitos
- cpf --> String, exatamente 11 dígitos
{
"numeroQuarto": 200,
"nomeHospede": "ExemploAtualizado",
"controle": 0,
"telefone": "664317425"
}
{
"Mensagem": "Dados atualizados."
}
{
"nome": "João da Silva",
"data_admissao": "25/05/2022"
}
{
"Mensagem": "Dados atualizados."
}
{
"cpf": "12345678928",
"nome": "Joana Almeida",
"numeroQuarto": 8,
"telefone": "199874627"
}
{
"error": false,
"message": "Hospede cpf 12345678928 atualizado com sucesso."
}
{
"CPF": "12345678912",
"nome": "Ramom Silva",
"numeroQuarto": 4,
"dataEntrada": "01/01/22",
"dataSaida": "12/01/22"
}
{
"Mensagem": "Os dados da reserva foram atualizados."
}
{
"numeroQuarto": 200,
"controle": 1,
"id_funcionario": 2,
"dataEntrada": "04/08/22"
}
{
"Mensagem": "Dados atualizados."
}
{
"Mensagem": "Registro do Id 1 removido com sucesso"
}
{
"Mensagem": "Registro do Id 1 removido com sucesso"
}
{
"erro": false,
"message": "Registro com cpf 12345678913 apagado com sucesso!"
}
{
"Mensagem": "Registro de reserva deletado."
}
{
"Mensagem": "Registro do Id 1 removido com sucesso"
}