Este é o projeto prático do mini-curso "Desvendando o Poder do NodeJS: Construindo APIs Rest" apresentado por Igor Sasaki no Tech Day IFSP Araraquara 2024. O projeto consiste em uma API de gerenciamento de usuários, com foco em autenticação, criação de usuários, atualização de dados e exclusão de contas.
- Introduzir os fundamentos do Node.js e Express para construção de APIs REST.
- Utilizar SQLite como banco de dados leve.
- Implementar autenticação segura com JWT.
- Criar operações básicas de CRUD (Create, Read, Update, Delete) para gerenciamento de usuários.
- Demonstrar boas práticas de desenvolvimento com TypeScript.
- Criação de Usuários: Registro de novos usuários com senhas criptografadas.
- Autenticação: Autenticação de usuários com JWT.
- Atualização de Dados: Edição de dados do usuário autenticado.
- Exclusão de Conta: Exclusão da conta do usuário autenticado.
- Consulta de Dados: Retorna os dados do usuário autenticado, sem expor a senha.
- Node.js
- Express
- SQLite
- JWT (jsonwebtoken)
- crypto-js para criptografia de senhas
- TypeScript para tipagem estática
- ESLint para padronização de código
Certifique-se de que você tem o Node.js (versão 14 ou superior) e o npm instalados em sua máquina.
-
Clone este repositório:
git clone https://github.com/IgorSasaki/auth-jwt-sqlite cd auth-jwt-sqlite
-
Instale as dependências:
npm install
-
Crie o banco de dados e as tabelas executando o script de migração:
npm run init-db
Para iniciar a aplicação em modo de desenvolvimento (com nodemon):
npm run dev
A aplicação estará disponível em: http://localhost:3333
-
Compile o projeto:
npm run build
-
Inicie o servidor:
npm start
http://localhost:3333
Para todas as rotas protegidas, é necessário fornecer o token JWT no cabeçalho da requisição:
Authorization: Bearer <seu_token_jwt>
-
Endpoint:
/users
-
Método:
POST
-
Descrição: Cria um novo usuário.
-
Corpo da Requisição:
{ "name": "Igor Sasaki", "email": "igor-sasaki@hotmail.com", "password": "minhasenha123" }
-
Exemplo de Resposta:
{ "userId": "uuid-do-usuario", "name": "Igor Sasaki", "email": "igor-sasaki@hotmail.com", "createdAt": "2024-10-17T08:45:35.422Z", "updatedAt": "2024-10-17T08:45:35.422Z" }
-
Endpoint:
/users/login
-
Método:
POST
-
Descrição: Autentica o usuário e retorna um token JWT.
-
Corpo da Requisição:
{ "email": "igor-sasaki@hotmail.com", "password": "minhasenha123" }
-
Exemplo de Resposta:
{ "token": "seu_token_jwt", "user": { "userId": "uuid-do-usuario", "name": "Igor Sasaki", "email": "igor-sasaki@hotmail.com" } }
-
Endpoint:
/users
-
Método:
PUT
-
Descrição: Atualiza os dados do usuário autenticado (apenas o nome).
-
Cabeçalho:
Authorization: Bearer <seu_token_jwt>
-
Corpo da Requisição:
{ "name": "Igor Sasaki" }
-
Exemplo de Resposta:
{ "userId": "uuid-do-usuario", "name": "Igor Sasaki", "email": "igor-sasaki@hotmail.com", "createdAt": "2024-10-17T08:45:35.422Z", "updatedAt": "2024-10-18T12:30:45.123Z" }
-
Endpoint:
/users
-
Método:
GET
-
Descrição: Retorna os dados do usuário autenticado.
-
Cabeçalho:
Authorization: Bearer <seu_token_jwt>
-
Exemplo de Resposta:
{ "userId": "uuid-do-usuario", "name": "Igor Sasaki", "email": "igor-sasaki@hotmail.com", "createdAt": "2024-10-17T08:45:35.422Z", "updatedAt": "2024-10-17T08:45:35.422Z" }
-
Endpoint:
/users
-
Método:
DELETE
-
Descrição: Exclui a conta do usuário autenticado.
-
Cabeçalho:
Authorization: Bearer <seu_token_jwt>
-
Exemplo de Resposta:
{ "message": "User deleted successfully" }
- Faça um fork deste repositório.
- Crie uma branch para sua feature:
git checkout -b minha-feature
. - Commit suas alterações:
git commit -m 'Adicionando minha feature'
. - Faça o push para a branch:
git push origin minha-feature
. - Abra um pull request.
Este projeto é licenciado sob os termos da MIT License.