Esta é uma API RESTful desenvolvida em Node.js + Express para o gerenciamento de estoque.
- Instale as dependências:
npm install
npm install morgan
- Inicie a API:
npm start
- Acesse:
- Documentação Swagger: http://localhost:3000/docs
- Rota de teste: http://localhost:3000/api/v1/products
GET /api/v1/products
→ Lista todos os produtosGET /api/v1/products/:id
→ Retorna um produto específicoPOST /api/v1/products
→ Cria um novo produtoPUT /api/v1/products/:id
→ Atualiza dados de um produtoDELETE /api/v1/products/:id
→ Remove um produto
- Listar produtos:
curl http://localhost:3000/api/v1/products
- Criar produto:
curl -X POST http://localhost:3000/api/v1/products \
-H "Content-Type: application/json" \
-d '{ "name": "Leite 1L", "quantity": 100, "price": 5.50 }'
- Buscar produto específico:
curl http://localhost:3000/api/v1/products/1
- Atualizar produto:
curl -X PUT http://localhost:3000/api/v1/products/1 \
-H "Content-Type: application/json" \
-d '{ "name": "Leite Integral 1L", "quantity": 150, "price": 5.75 }'
- Deletar produto:
curl -X DELETE http://localhost:3000/api/v1/products/1
npm install --save-dev jest supertest @types/jest
# Rodar todos os testes
npm test
# Rodar testes em modo watch (desenvolvimento)
npm run test:watch
# Gerar relatório de cobertura
npm run test:coverage
A API possui testes automatizados completos que cobrem:
✅ Listagem de produtos (GET /api/v1/products)
- Validação de status HTTP 200
- Verificação da estrutura de dados retornada
- Confirmação das propriedades dos produtos
✅ Busca por ID (GET /api/v1/products/:id)
- Busca com ID válido
- Tratamento de ID inexistente (404)
✅ Criação de produtos (POST /api/v1/products)
- Criação com dados válidos
- Validação de campos obrigatórios
- Tratamento de erros de validação (400)
✅ Atualização de produtos (PUT /api/v1/products/:id)
- Atualização completa de produto
- Atualização parcial de campos
- Tratamento de produto inexistente (404)
✅ Remoção de produtos (DELETE /api/v1/products/:id)
- Deleção bem-sucedida
- Verificação de remoção efetiva
- Tratamento de produto inexistente (404)
tests/
└── product.test.js # Arquivo principal com todos os testes
Os testes cobrem:
- ✅ Todas as rotas CRUD
- ✅ Cenários de sucesso
- ✅ Cenários de erro
- ✅ Validação de dados
- ✅ Códigos de status HTTP
Esta API poderia ser aplicada em diversos contextos de controle de estoque:
- Mercearias e supermercados: acompanhar a quantidade de itens em tempo real.
- Farmácias: controlar validade e disponibilidade de medicamentos.
- Lojas de roupas: registrar entrada e saída de peças do estoque.
- E-commerce: integração com vendas online para atualizar automaticamente o estoque.
- Node.js (>=18.0.0)
- Express
- Swagger UI
- Morgan (logging)
- Nodemon (hot-reload)
- Jest (framework de testes)
- Supertest (testes de integração HTTP)
npm start # Inicia o servidor em produção
npm run dev # Inicia o servidor em modo desenvolvimento (com hot-reload)
npm test # Executa todos os testes
npm run test:watch # Executa testes em modo watch
npm run test:coverage # Gera relatório de cobertura de código
api-rest/
├── src/
│ ├── routes/
│ │ └── products.js # Rotas de produtos
│ ├── data.js # Simulação de banco de dados
│ ├── server.js # Configuração do servidor
│ └── openapi.json # Documentação Swagger
├── tests/
│ └── product.test.js # Testes automatizados
├── package.json # Dependências e scripts
├── package-lock.json # Lock file
└── README.md # Este arquivo
- ✅ Documentação automática com Swagger
- ✅ Logging de requisições com Morgan
- ✅ Testes automatizados com Jest
- ✅ Validação de dados de entrada
- ✅ Tratamento adequado de erros
- ✅ Códigos de status HTTP apropriados
- ✅ Estrutura modular e escalável
- CRUD completo de produtos
- Documentação Swagger
- Testes automatizados
- Validação de dados
- Persistência em banco de dados
- Autenticação e autorização
- Paginação de resultados
- Filtros e busca avançada