Uma API RESTful desenvolvida em Node.js com autenticação JWT, banco de dados MongoDB usando Prisma ORM.
- Node.js - Runtime JavaScript
- Express.js - Framework web
- JWT (JSON Web Token) - Autenticação e autorização
- Prisma - ORM para banco de dados
- MongoDB - Banco de dados NoSQL
- bcrypt - Criptografia de senhas
- CORS - Cross-Origin Resource Sharing
- Node.js (versão 14 ou superior)
- MongoDB
- npm ou yarn
-
Clone o repositório
git clone <url-do-repositorio> cd api-node-jwt
-
Instale as dependências
npm install
-
Configure as variáveis de ambiente
Crie um arquivo
.env
na raiz do projeto:DATABASE_URL="mongodb://localhost:27017/api-jwt" JWT_SECRET="sua-chave-secreta-aqui"
-
Configure o banco de dados
npx prisma generate npx prisma db push
-
Inicie o servidor
node server.js
O servidor estará rodando na porta http://localhost:3000
Api-test/
├── middlewares/
│ └── auth.js # Middleware de autenticação JWT
├── routes/
│ ├── public.js # Rotas públicas (registro e login)
│ └── private.js # Rotas privadas (requerem autenticação)
├── prisma/
│ └── schema.prisma # Schema do banco de dados
├── server.js # Arquivo principal do servidor
└── package.json # Dependências do projeto
Registra um novo usuário.
Body:
{
"name": "João Silva",
"email": "[email protected]",
"password": "senha123"
}
Resposta:
{
"id": "64f8a1b2c3d4e5f6a7b8c9d0",
"name": "João Silva",
"email": "[email protected]",
"passwordHash": "hash_da_senha"
}
Autentica um usuário e retorna um token JWT.
Body:
{
"email": "[email protected]",
"password": "senha123"
}
Resposta:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Lista todos os usuários cadastrados.
Headers:
Authorization: Bearer <seu-token-jwt>
Resposta:
{
"message": "Usúarios listados com sucesso",
"users": [
{
"id": "64f8a1b2c3d4e5f6a7b8c9d0",
"name": "João Silva",
"email": "[email protected]"
}
]
}
A API utiliza JWT (JSON Web Token) para autenticação:
- Login: O usuário faz login e recebe um token JWT válido por 7 dias
- Acesso às rotas privadas: Inclua o token no header
Authorization: Bearer <token>
- Validação: O middleware
auth.js
verifica a validade do token
O projeto utiliza MongoDB com Prisma ORM. O schema define um modelo User
com:
id
: Identificador único (ObjectId)name
: Nome do usuárioemail
: Email único do usuáriopasswordHash
: Senha criptografada com bcrypt
# Instalar dependências
npm install
# Gerar cliente Prisma
npx prisma generate
# Sincronizar schema com o banco
npx prisma db push
# Abrir interface do Prisma Studio
npx prisma studio
DATABASE_URL
: URL de conexão com o MongoDBJWT_SECRET
: Chave secreta para assinatura dos tokens JWT
DATABASE_URL="mongodb://localhost:27017/api-jwt"
JWT_SECRET="minha-chave-super-secreta-123"
Para fazer deploy da aplicação:
- Configure as variáveis de ambiente no servidor
- Instale as dependências:
npm install
- Execute as migrações:
npx prisma db push
- Inicie o servidor:
node server.js
Este projeto está sob a licença ISC.
Desenvolvido como projeto de estudo de APIs com Node.js, JWT e Prisma.
Nota: Certifique-se de alterar a JWT_SECRET
em produção para uma chave segura e única.