Skip to content

imetropoledigital/dev-backend

Repository files navigation

dev-backend

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.


Pré-requisitos

npm install -g sequelize-cli

Instalação

npm install

Execução

# Execução direta
npm start

# Modo desenvolvimento com hot-reload (nodemon)
npm run dev

O servidor sobe na porta 8080. Ao iniciar, você verá a mensagem:

Servidor pronto na porta 8080

Testando a API com o arquivo api.http

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:

  1. Instale a extensão REST Client no VS Code.
  2. Abra o arquivo api.http.
  3. 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).


Estrutura do projeto

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

Rotas disponíveis

Raiz

Método Rota Descrição
GET / Verifica se a API está no ar

Resposta:

{ "msg": "Hello from Express!" }

Usuários — /usuarios

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!" }

Posts — /posts

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!" }

Validação

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álido
  • senha: obrigatório, string
  • Campos extras não são permitidos (additionalProperties: false)

Dependências principais

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

About

Exemplos trabalhados em sala do curso de desenvolvimento backend do curso técnico do IMD

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors