Projeto de exemplo para a disciplina de Desenvolvimento Backend do IMD/UFRN.
A aplicação é uma API REST simples construída com Node.js e Express, utilizando Sequelize como ORM e SQLite como banco de dados. O objetivo é ilustrar conceitos como roteamento, middlewares, validação de dados, models, migrations e organização de projetos backend.
- Node.js v14+
- npm
- Sequelize CLI (opcional, para rodar migrations manualmente)
npm install -g sequelize-clinpm install# Execução direta
npm start
# Modo desenvolvimento com hot-reload (nodemon)
npm run devO servidor sobe na porta 8080. Ao iniciar, você verá a mensagem:
Servidor pronto na porta 8080
O arquivo api.http na raiz do projeto contém exemplos prontos de todas as requisições. Para usá-lo você precisa da extensão REST Client no VS Code:
- Instale a extensão REST Client no VS Code.
- Abra o arquivo
api.http. - Clique em "Send Request" acima de cada bloco para executar a chamada.
Você também pode importar o arquivo em ferramentas como Insomnia ou Postman (via importação de coleção HTTP).
dev-backend/
├── index.js # Ponto de entrada — configura e sobe o Express
├── rotas/
│ ├── usuario.rota.js # Rotas de /usuarios
│ └── post.rota.js # Rotas de /posts
├── middlewares/
│ └── validarUsuario.middleware.js # Valida o corpo das requisições de usuário
├── schemas/
│ └── usuario.schema.js # Schema JSON do usuário (AJV)
├── api.http # Exemplos de requisições para teste
└── package.json
| Método | Rota | Descrição |
|---|---|---|
| GET | / |
Verifica se a API está no ar |
Resposta:
{ "msg": "Hello from Express!" }Os dados de usuário são validados pelo middleware antes de serem persistidos. O campo email deve ser um e-mail válido e senha é obrigatória.
| Método | Rota | Descrição |
|---|---|---|
| GET | /usuarios |
Lista todos os usuários cadastrados |
| GET | /usuarios/:id |
Busca um usuário pelo ID (path param) |
| POST | /usuarios |
Cria um novo usuário |
| PUT | /usuarios/?id=[ID] |
Atualiza um usuário existente pelo ID |
| DELETE | /usuarios/?id=[ID] |
Remove um usuário pelo ID |
Corpo esperado no POST e PUT:
{
"email": "someuser@gmail.com",
"senha": "changeit"
}Exemplos de resposta:
- Criação bem-sucedida (
POST):{ "msg": "Usuário adicionado com sucesso!" } - Atualização bem-sucedida (
PUT):{ "msg": "Usuário atualizado com sucesso!" } - Remoção bem-sucedida (
DELETE):{ "msg": "Usuário deletado com sucesso!" } - Dados inválidos (400):
{ "msg": "Dados inválidos", "erros": [...] } - ID não encontrado (400):
{ "msg": "Usuário não encontrado!" }
| Método | Rota | Descrição |
|---|---|---|
| GET | /posts |
Lista todos os posts cadastrados |
| GET | /posts/:id |
Busca um post pelo ID (path param) |
| POST | /posts |
Cria um novo post |
| PUT | /posts/?id=[ID] |
Atualiza um post existente pelo ID |
| DELETE | /posts/?id=[ID] |
Remove um post pelo ID |
Exemplos de resposta:
- Criação bem-sucedida (
POST):{ "msg": "Post adicionado com sucesso!" } - Atualização bem-sucedida (
PUT):{ "msg": "Post atualizado com sucesso!" } - Remoção bem-sucedida (
DELETE):{ "msg": "Post deletado com sucesso!" } - ID não encontrado (400):
{ "msg": "Post não encontrado!" }
A rota de usuários utiliza o middleware validarUsuario, que valida o corpo da requisição com o schema definido em schemas/usuario.schema.js usando a biblioteca AJV. As regras são:
email: obrigatório, formato de e-mail válidosenha: obrigatório, string- Campos extras não são permitidos (
additionalProperties: false)
| Pacote | Uso |
|---|---|
| express | Framework web |
| uuid | Geração de IDs únicos (UUIDv4) |
| ajv + ajv-formats | Validação de schemas JSON |
| nodemon (dev) | Hot-reload no desenvolvimento |