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
.
Para rodar a aplicação via container você vai precisar utilizar os seguintes comandos:
Iniciar os containers em segundo plano
docker-compose up -d
Acessar o terminal do container
docker exec -it api bash
Instalar as dependências da aplicação
npm install
Iniciar a aplicação
npm start
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
├── src
│ ├── config
│ │ └── config.js
│ ├── controllers
│ │ ├── createUser.js
│ │ ├── getUsers.js
│ │ ├── login.js
│ │ └── posts.js
│ ├── migrations
│ │ ├── [timestamp]-users.js
│ │ └── [timestamp]-posts.js
│ ├── models
│ │ ├── index.js
│ │ ├── Post.js
│ │ └── User.js
│ ├── seeders
│ │ ├── [timestamp]-users.js
│ │ └── [timestamp]-posts.js
│ ├── services
│ │ ├── index.js
│ │ ├── postService.js
│ │ └── userService.js
│ ├── app.js
│ ├── routes.js
│ └── server.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
.
Estão concentradas as regras de negócio da aplicação, fazendo a comunicação entre camada de modelo e de controle.
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 novas pessoas usuárias. -
getUsers.js
: Encontra as pessoas usuárias cadastradas. -
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.
Arquivo que configura as portas da aplicação e inicia o servidor Express.
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. **