Nesta aplicação foi desenvolvido uma API e um banco de dados, com intuito de produzir uma loja de produtos medievais. A aplicação segue os princípios REST. Para acessar os endereços da aplicação, é necessário fazer autenticação e quando autenticado a API responderá trazendo um token no corpo da requisição. O token deverá ser inserido no cabeçalho de cada requisição privada, com o intuito de autenticação. A arquitetura da aplicação se baseia em relações entre usuário por pedidos e de pedidos por produtos. Dentro do projeto existe um diagrama dentro da pasta images exemplificando estas ligações.
End-Point para cadastro de pessoas.
- A rota deve receber os campos username, classe, level e password.
{
"username": "Dante",
"classe": "swordsman",
"level": 10,
"password": "SavingPeople"
}
- Se users foi feito com sucesso, o seja os dados foram preenchidos corretamente. Aplicação retornará status http 200 com um token.
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
Authenticação.
- A rota deve receber os campos username e password.
{
"username": "string",
"password": "string"
}
- Se o login foi feito com sucesso, o seja a pessoa já esta cadastrada. Aplicação retornará status http 200 com um token.
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
- Se a pessoa não estriver cadastrada no banco. Aplicação retornará status http 401 com a mensagem "Username or password invalid".
Adicionar um novo produto.
- A rota deve receber os campos name e amount.
{
"name": "string",
"amount": "string"
}
- Se o products foi feito com sucesso, o seja os campos para products foram preenchido corretamente. Aplicação retornará status http 201 com body.
{
"id": 1,
"name": "string",
"amount": "string",
}
Lista todos os produtos.
[
{
"id": 1,
"name": "Espada curta",
"amount": "10 peças de ouro",
"orderId": 12
},
{
"id": 2,
"name": "Escudo desnecessariamente grande",
"amount": "20 peças de ouro",
"orderId": 12
},
....
Adicionar um novo pedido.
- A rota deve receber o campo productsIds.
{
"productsIds": [1, 2]
}
- Se o pedido foi feito com sucesso, o seja os campos para orders foram preenchido corretamente. Aplicação retornará status http 201 com body.
{
"userId": 1,
"productsIds": [1, 2]
}
Lista todos os pedidos.
[
{
"id": 1,
"userId": 2,
"productsIds": [1, 2]
},
{
"id": 2,
"userId": 2,
"productsIds": [1, 4]
}
....
Desenvolvido em nodejs e typescript.
Framework utilizado: Express.
Libs: nodemon, eslint, express-async-errors, dotenv, joi, jsonwebtoken, mysql2
cd TrybeSmith/
docker-compose up -d
docker exec -it trybesmith bash
cd src
npm install
npm run dev
cd TrybeSmith/src/
npm install
npm run dev
Caso queira roda a aplicação via docker, deverá ter o docker instalado no dispositivo, caso não esteja instalado você pode encontra como instalar neste link site oficial