API REST com autenticação JWT construída com Node.js, TypeScript e Express.
- Node.js + TypeScript
- Express 5
- jsonwebtoken — geração e validação de tokens JWT
- tsx — execução em desenvolvimento
- tsup — build para produção
- Node.js 20+
- npm
- nvm
nvm use
npm installCrie um arquivo .env na raiz do projeto:
AUTH_SECRET=sua_chave_secreta_aqui| Comando | Descrição |
|---|---|
npm run dev |
Inicia o servidor em modo watch |
npm run build |
Compila para dist/ |
npm run start |
Executa o build de produção |
POST /sessions
Realiza login e retorna um token JWT.
Body:
{
"username": "Fabri test",
"password": "123456"
}Resposta:
{
"token": "eyJhbGci..."
}GET /products
Lista produtos. Rota pública.
POST /products
Cria um produto. Requer autenticação e role sale, admin ou master.
Headers:
Authorization: Bearer <token>
src/
├── config/
│ └── auth.ts # Configuração do JWT
├── controllers/
│ ├── products-controller.ts
│ └── sessions-controller.ts
├── middlewares/
│ ├── ensureAuthenticated.ts # Valida o token JWT
│ └── verifyUserAuthorization.ts # Valida o role do usuário
├── routes/
│ ├── index.ts
│ ├── products.routes.ts
│ └── session.routes.ts
├── types/
│ └── express.ts # Extensão do Request com user autenticado
├── utils/
│ └── AppError.ts # Classe de erro com statusCode HTTP
├── app.ts # Configuração do Express
└── server.ts # Ponto de entrada