- essa é uma APIRest que fiz usando axios e jwt, além de banco MySQL e Sequelize para manipular o banco.
- Nela é possível adicionar novos jogos, ler, deletar e atualizar por exemplo. seguindo um CRUD (Create, Read, Update, Delete) completo.
- Para iniciar é bem simples, primeiramente iremos rodar o comando:
-
npm i
- Com isso ele irá baixar todos os pacotes de dependências que estão no package.json, necessarios para que o projeto funcione 100%.
- Para configurar o seu banco, basta criar um novo schema chamado "apirest"
- rode o comando no dentro do projeto no terminal:
-
npm start
- Obs:
-
"dentro do novo schema, crie uma tabela chamada games e outra chamada users caso elas não sejam criadas ao você rodar npm start no console."
-
no diretorio database/database.js, altere as informação para as do seu banco, ex: const sequelize = require('sequelize'); const connection = new sequelize('nomebanco', 'seuUsuario', 'suaSenha', { dialect: 'mysql', host: 'localhost', timezone: '-03:00' });
module.exports = connection;
- Esse endpoint é responsavél por criar um usuário através da rota http://localhost:4567/users com o method POST dentro do POSTMAN.
- Vale ressaltar que eu removi a permição auth dentro da index.js na rota de criar e visualizar os usuários devido a se tiver você não conseguir criar, nem ver os usuários no começo, após criar seu usuário você pode retornar com o "auth" bloqueando quem não tenha login de visualizar as rotas.
- Após ter criado o usuário e logado através da rota http://localhost:4567/auth (para authenticar que você está logado e tem as permissões) ele irá gerar um token, você irá copiar e colar dentro de authorization no POSTMAN para conseguir editar/deletar/criar games.
- você irá conseguir criar os games através da index.html, porém antés você precisará alterar o seu token, e ai sim, criar/editar/deletar os games no seu navegador.
- name: nome do usuário que irá ser cadastrado
- email: email do usuário que irá ser cadastrado
- password: senha do usuário que irá ser cadastrado Exemplo:
{
"name": "joaovt",
"email": "teste@gmail.com.br",
"password": 1234
}
- Caso esse seja a resposta retornada, significa que ocorreu tudo certo e que o usuário foi cadastrado no banco.
- Caso esse erro ocorra, significa que algum dos pârametros foi passado errado
- Esse endpoint é responsável por retornar a listagem de todos os games cadastrados no banco de dados.
- Nenhum
- Caso esse seja a resposta retornada, significa que ocorreu tudo certo e você recebrá a listagem de game do banco. Exemplo de resposta:
[
{
"id": 1,
"title": "GTA V",
"year": 2013,
"price": "35",
"createdAt": "2022-06-23T18:48:27.000Z",
"updatedAt": "2022-06-23T18:48:27.000Z"
},
{
"id": 2,
"title": "The witcher 3",
"year": 2015,
"price": "40",
"createdAt": "2022-06-23T18:57:43.000Z",
"updatedAt": "2022-06-23T18:57:43.000Z"
},
{
"id": 3,
"title": "The Crew 2",
"year": 2015,
"price": "200",
"createdAt": "2022-06-25T00:05:50.000Z",
"updatedAt": "2022-06-27T19:53:30.000Z"
}
]
- Casso essa seja a resposta retornada, significa que ocorreu alguma falha durante o processo de autenticação da requisição, motivo: Token errado. Exemplo de resposta:
{
"err": "token invalido."
}
- Esse endpoint é responsável por retornar a listagem de um game especifico através do id.
- Id do game na rota: Exemplo:
- http://localhost:4567/game/2
- Caso esse seja a resposta retornada, significa que ocorreu tudo certo e você recebrá a listagem do game daquele ID. Exemplo de resposta:
[
{
"id": 2,
"title": "The witcher 3",
"year": 2015,
"price": "40",
"createdAt": "2022-06-23T18:57:43.000Z",
"updatedAt": "2022-06-23T18:57:43.000Z"
}
]
- Casso essa seja a resposta retornada, significa que o jogo não foi encontrado. Exemplo de resposta:
Not Found
- Esse endpoint é responsável por retornar todos os usuários cadastrados
- Nenhum
- Caso esse seja a resposta retornada, significa que ocorreu tudo certo e você recebrá todos os usuários cadastrados. Exemplo de resposta:
[
{
"id": 1,
"name": "joaovt",
"email": "teste@gmail.com",
"password": 1234,
"createdAt": "2022-06-23T18:22:39.000Z",
"updatedAt": "2022-06-23T18:22:39.000Z"
}
]
- Casso essa seja a resposta retornada, significa que não existe nenhum usuário cadastrado no banco.
[]
- Esse endpoint é responsável por fazer o processo de login.
- email: E-mail do usuário cadastrado no sistema
- password: Senha do usuário cadastrado no sistema. Exemplo:
{
"email": "teste@gmail.com",
"password": 1234
}
- Caso esse seja a resposta retornada, significa que ocorreu tudo certo e você recebrá o token JWT para acessar endpoints protegidos na API. Exemplo de resposta:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZW1haWwiOiJ0ZXN0ZUBnbWFpbC5jb20iLCJpYXQiOjE2NTY0MTQ5NjcsImV4cCI6MTY1NjgxMDk2N30.RCjoPvbdi23Gj8IEgjnusEDP2pHOiPyMwA66LvDDtV4"
}
- Casso essa seja a resposta retornada, significa que ocorreu alguma falha durante o processo de autenticação da requisição, Motivo: E-mail ou senha incorretos. Exemplo de resposta:
{
e: 'Email não encontrado.'
}
- Esse endpoint é responsável por criar um novo game.
- title: Titulo do jogo que irá cadastrar
- year: ano do jogo que irá cadastrar
- price: preço do jogo que irá cadastrar Exemplo:
{
"title": "Red Dead 2",
"year": "2019",
"price": "199.90"
}
- Caso esse seja a resposta retornada, significa que ocorreu tudo certo e que o game foi cadastrado com sucesso. Exemplo de resposta:
Ok
- Casso essa seja a resposta retornada, significa que algo deu errado, geralmente o erro está nos pâramtros passado. Exemplo de resposta:
Bad Request
- Esse endpoint é responsável por atualizar um game.
- title: Titulo novo do game
- year: ano do game
- price: preço novo do game Exemplo:
- http://localhost:4567/game/2
{
"title": "Red Dead 2",
"year": "2019",
"price": 199.90
}
- Caso esse seja a resposta retornada, significa que ocorreu tudo certo e que o game foi atualizado com sucesso. Exemplo de resposta:
Ok
- Casso essa seja a resposta retornada, significa que algo deu errado, geralmente o erro está nos pâramtros passado Exemplo de resposta:
Bad Request
- Feito as configurações, basta rodar o comando.
-
npm start