Esse projeto é uma API base para ser utilizada na aula sobre JWT do curso de NodeJS da Trybe.
No seu terminal, cmd, power shell ou bash execute os seguintes comandos:
git clone git@github.com:tryber/nodejs-jwt-base-project.git
cd nodejs-jwt-base-project
npm i
- Faça uma cópia do arquivo
.env.example
, criando um arquivo.env
com as suas credenciais SQL; - No seu terminal, execute o comando
npm start
;- Esse comando vai, automaticamente, rodar o script de
prestart
, que inicializará o banco com osequelize
.
- Esse comando vai, automaticamente, rodar o script de
- O comando acima irá criar o banco de dados
jwt_exercises_dev
e povoar as tabelasUsers
ePosts
.
Abaixo, está a estrutura base do projeto. Ele implementa uma API em NodeJS e Express que permite criar usuários, listar posts e fazer login. O projeto base contém uma autenticação simples. Durante a aula, é mostrado como adicionar à API autenticação via JWT.
├── README.md
├── api
│ ├── routes.js
│ └── server.js
├── config
│ └── config.js
├── controllers
│ ├── createUser.js
│ ├── getUsers.js
│ ├── login.js
│ └── posts.js
├── migrations
│ ├── users.js
│ └── posts.js
├── models
│ ├── index.js
│ ├── Post.js
│ └── User.js
├── seeders
│ ├── users.js
│ └── posts.js
├── .env.example
├── package-lock.json
└── package.json
Modelos são responsáveis por fazer o mapeamento entre as entidades que sua aplicação manipula e a camada de dados. Contêm todas as interações responsáveis por ler e escrever dados no seu banco de dados.
Estão organizados dentro da pasta models
.
Migrations são responsáveis por criar e/ou restaurar as alterações no banco de dados.
Estão organizados dentro da pasta migrations
e há uma migration para cada tabela no banco de dados. No exemplo, existem as tabelas Users
e Posts
.
Seeders são responsáveis por povoar os dados das tabelas do banco de dados.
Estão organizadas dentro da pasta seeders
. No exemplo, existem seeders para as tabelas Users
e Posts
.
Controllers são as funções utilizadas como callbacks na definição de rotas. Eles são responsáveis por lidar com as requisições que chegam nas diferentes rotas de sua aplicação e criando a resposta que será enviada para o cliente. Normalmente, interagem com um ou mais modelos para ler/escrever dados do banco de dados.
A API possui quatro controllers:
-
createUser.js
: Lida com a criação de novo usuários. -
getUsers.js
: Encontra os usuários cadastrados. -
login.js
: Responsável pela lógica de login. -
posts.js
: Encontra os posts de um usuário.
Esse é um arquivo que concentra os controllers do projeto.
Aqui é onde é criado de fato a API com o Express. Também é onde todas as rotas são configuradas.
Este arquivo é responsável por guardar os dados sensíveis do servidor. Este arquivo deve ser editado com as credencias MySQL da pessoa desenvolvedora. Neste exemplo, está sendo utilizado o usuário root
com senha inexistente.
**.env
arquivo não deve ser commitado na esmagadora parte das vezes, pois armazena dados sensíveis. **