Uma API RESTful robusta construída com Node.js, TypeScript e Express, projetada para servir como back-end para aplicações que necessitem de operações CRUD e autenticação de usuários.
- Arquitetura Modular: Rotas organizadas por recursos para fácil manutenção e escalabilidade
- TypeScript: Tipagem forte para reduzir erros em tempo de desenvolvimento
- Autenticação Segura: Implementação JWT com bcryptjs para hash de senhas
- Validação de Dados: Esquemas Yup para garantir integridade dos dados
- Banco de Dados: PostgreSQL com Knex para migrations e queries
- Testes Automatizados: Jest e Supertest para garantir qualidade do código
- Node.js (>= 16.x)
- Yarn
- PostgreSQL
- Clone o repositório:
git clone https://github.com/matheusprado1/api-rest-node-typescript.git
cd api-rest-node-typescript
- Instale as dependências:
yarn install
- Configure o ambiente:
cp .env.example .env
- Edite o arquivo
.env
com suas configurações de banco de dados:
DB_CLIENT=pg
DB_HOST=localhost
DB_PORT=5432
DB_USER=seu_usuario
DB_PASSWORD=sua_senha
DB_DATABASE=seu_banco
JWT_SECRET=umsegredoseguro
- Execute as migrations para criar as tabelas:
yarn knex:migrate
- (Opcional) Execute os seeds para popular o banco com dados de exemplo:
yarn knex:seed
api-rest-node-typescript
├── src
│ ├── server
│ │ ├── controllers # Controladores para cada recurso (cities, persons, users)
│ │ ├── database # Configuração do banco, migrations, models e seeds
│ │ ├── routes # Definição de rotas da API
│ │ ├── shared # Componentes compartilhados (middlewares, serviços)
│ │ ├── Server.ts # Configuração do servidor Express
│ │ └── index.ts # Ponto de entrada do servidor
│ └── index.ts # Ponto de entrada da aplicação
├── tests # Testes automatizados
├── .env.example # Modelo para variáveis de ambiente
├── jest.config.ts # Configuração do Jest
├── tsconfig.json # Configuração do TypeScript
└── package.json # Dependências e scripts
Para iniciar o servidor em modo de desenvolvimento com reload automático:
yarn start
Para compilar e iniciar o servidor em modo de produção:
yarn production
Para executar os testes automatizados:
yarn test
- Executar migrations:
yarn knex:migrate
- Reverter última migration:
yarn knex:rollback
- Reverter todas as migrations:
yarn knex:rollback-all
- Executar seeds:
yarn knex:seed
POST /signin
: Autenticação de usuário (login)POST /signup
: Registro de novo usuário
GET /cities
: Lista todas as cidadesGET /cities/:id
: Obtém uma cidade específicaPOST /cities
: Cria uma nova cidadePUT /cities/:id
: Atualiza uma cidade existenteDELETE /cities/:id
: Remove uma cidade
GET /persons
: Lista todas as pessoasGET /persons/:id
: Obtém uma pessoa específicaPOST /persons
: Cria uma nova pessoaPUT /persons/:id
: Atualiza uma pessoa existenteDELETE /persons/:id
: Remove uma pessoa
A API utiliza JSON Web Tokens (JWT) para autenticação. Para acessar rotas protegidas:
- Obtenha um token via endpoint
/signin
- Inclua o token no header de suas requisições:
Authorization: Bearer seu_token_jwt
- Node.js: Ambiente de execução JavaScript
- TypeScript: Superset tipado de JavaScript
- Express: Framework web para Node.js
- Knex: Query builder SQL
- PostgreSQL: Banco de dados relacional
- JWT: Autenticação via tokens
- Yup: Validação de esquemas
- Jest & Supertest: Framework de testes
Desenvolvido por Matheus Prado