API de treinamento da trilha Node Js do NLW04 Fev 2021.
- Clonar o repositório
- Executar o comando
yarn add
para instalar as dependências - Executar o comando
yarn dev
dentro da pasta api para rodar o servidor
Aqui eu vou tentar montar um resumo de tudo que foi utilizado e feito durante o processo de desenvolvimento da API.
-
Usando o arquivo
Teste.ts
foram realizadas algumas demonstrações de como funciona utilizarTypeScript
no lugar deJaveScript
.- Foi apresentada a diferença de indicação usando ou não a definição de tipos.
- Foi apresentada uma forma de fazer o desempacotamento de dados de uma estrutura.
A seguir temos uma lista dos modulos que foram instalados separados pelas aulas do desenvolvimento:
- Aula 01 - Introdução:
- Dependências:
express
- Dependências de desenvolvimento:
typescript
ts-node-dev
@type/express
- Dependências:
- Aula 02 - Banco de Dados:
- Dependências:
- Dependências de desenvolcimento:
- Aula 03 - Testando a aplicação:
- Dependências:
- Dependências de desenvolcimento:
- Aula 04 - Envio de e-mail:
- Dependências:
- Dependências de desenvolcimento:
- Aula 05 - Finalizando com validações:
- Dependências:
- Dependências de desenvolcimento:
- Aula 01 - Introdução:
- Dentro da pasta da
api
foi criado a aplicação com o comando yarn init -y. - As dependências foram instaladas.
- O arquivo
server.ts
foi criado para servir como sendo a base do servidor da aplicação.- No arquivo
server.ts
foi implementada a criação e inicialização do server express.
- No arquivo
- O arquivo
routes.ts
foi criado para servir como configurador das rotas do sistema. - A pasta
controllers
foi criada para armazenar os controllers que serão desenvolvidos na aplicação. - O arquivo
UserController.ts
foi criado para servir como o controller responsável pelas requisições de Usuários.- A rota POST de
UserController
foi configurada no arquivorouter.ts
- A rota POST de
- Dentro da pasta da
- Aula 02 - Banco de Dados:
- Instalação do
TypeORM
que será utilizado por ter uma boa sinergia com o TypeScript.- Para isso usamos o comando yarn add typeorm
- Também é necessário fazer a instalação do
reflect-metadata
- Por fim é necessário fazer a instalação do driver do Banco de Dados que será utilizado.
- No caso será utilizado o
sqlite3
- No caso será utilizado o
- Com o
TypeORM
instalado é o momento de criar o arquivo de configuraçãoormconfig.json
- No configurador será indicado o tipo do banco de dados
- A indicação do local do nosso banco de dados.
- Como estamos usando o sqlite, foi criada uma pasta para fazer o armazenamento desse banco.
- Foi criado um arquivo
index.ts
na pastadatabase
. Esse arquiv será o responsável por fazer a conexão com o banco.- Com o arquivo responsável pela conexão criado, ele (junto com o reflect-metadata) precisam ser importados para utilização no arquivo
server.ts
- Com o arquivo responsável pela conexão criado, ele (junto com o reflect-metadata) precisam ser importados para utilização no arquivo
- Criação do sistema de migrations para fazer o controle de versões do banco de dados.
- Esse sistema ajuda a manter a organização dos bancos de dados utilizados no sistema.
- Criação de um comando para rodar as migrations, o comando ficou
yarn typeorm
- Foi criada uma pasta para armazenar as migrations, e esse caminho foi configurado no arquivo de configurações
ormconfig.json
- Com o sistema das migrations todo configurado foi criada uma primeira migration para a criação da Tabela de
users
- O comando utilizado foi
yarn typeorm migration:create [NOME TABELA]
- Em seguida foi configuradas as funções
up
edown
da migration - Para rodar a migration foi utilizado o comando
yarn typeorm migration:run
- O comando utilizado foi
- Implementação do método create do
UserController
e ele foi configurado no arquivoroutes.ts
- Criação da pasta
models
e do arquivoUser.ts
- Foi necessário fazer a configuração dos decorators. Para tanto devemos alterar as seguintes configurações no arquivo
tsconfig.json
- "experimentalDecorators": true
- "emitDecoratorMetadata": true
- "strictPropertyInitialization": false
- Foi criada a classe
User
. E foi implementada a lógica de criação do Id usando uuid - Foi implementado utilizando um repository a função para a criação de uma entidade no banco de dados.
- Foi implementada uma validação para usuários com e-mail repetido.
- Foi necessário fazer a configuração dos decorators. Para tanto devemos alterar as seguintes configurações no arquivo
- Instalação do
- Aula 03 - Testando a aplicação:
- Aula 04 - Envio de e-mail:
- Aula 05 - Finalizando com validações: