O foco principal deste projeto é, com base nos ensinamentos da Trybe, desenvolver uma API RESTful utilizando a arquitetura MSC (Model-Service-Controller). O sistema criado é uma plataforma de gerenciamento de vendas no formato dropshipping, que permite realizar as operações de CRUD (Create, Read, Update, Delete) para produtos e vendas. A aplicação utiliza o banco de dados MySQL para a gestão de dados e segue as boas práticas de desenvolvimento de APIs.
O que é a Trybe?🤔
A Trybe é uma escola de desenvolvimento web genuinamente comprometida com o sucesso profissional de seus estudantes. Com o Modelo de Sucesso Compartilhado (MSC) oferecido pela Trybe Fintech, uma instituição financeira autorizada pelo Banco Central do Brasil, os alunos têm a opção de pagar apenas quando estiverem trabalhando.- Desenvolvimento da API:
- Implementar endpoints para criar, listar, atualizar e deletar produtos e vendas.
- A API é capaz de gerenciar produtos, permitindo que os usuários adicionem, visualizem, atualizem e removam produtos do banco de dados.
- A API também oferece funcionalidades de gerenciamento de vendas, permitindo registrar múltiplos produtos em uma venda e acompanhar os detalhes das transações.
-
Arquitetura MSC:
- Seguindo o padrão MSC, a aplicação foi organizada em três camadas principais:
- Model: Responsável por interagir com o banco de dados.
- Service: Contém a lógica de negócios e validações.
- Controller: Recebe as requisições e envia as respostas ao cliente.
- Seguindo o padrão MSC, a aplicação foi organizada em três camadas principais:
-
Validações e Regras de Negócio:
- Foram implementadas diversas validações para garantir a consistência dos dados. Os endpoints de produtos e vendas validam o corpo da requisição antes de acessar o banco de dados, garantindo que as informações enviadas pelos clientes estejam corretas.
-
Testes Automatizados:
- Um dos grandes focos deste projeto foi a implementação de testes automatizados. A aplicação foi testada para garantir a cobertura mínima exigida, com testes unitários escritos para cobrir todas as camadas da aplicação.
- Os testes foram implementados utilizando a ferramenta Mocha, e mockando o banco de dados nas camadas de model.
-
Produtos:
- GET /products: Retorna todos os produtos cadastrados no banco de dados.
- GET /products/:id: Retorna o produto com o ID fornecido na URL.
- POST /products: Cadastra um novo produto no banco de dados.
- PUT /products/:id: Atualiza um produto existente.
- DELETE /products/:id: Remove um produto com base no ID fornecido.
-
Vendas:
- GET /sales: Retorna todas as vendas registradas.
- GET /sales/:id: Retorna uma venda específica pelo ID.
- POST /sales: Cadastra uma nova venda, permitindo registrar múltiplos produtos.
- DELETE /sales/:id: Remove uma venda com base no ID fornecido.
- API RESTful: Desenvolvimento de uma API seguindo os padrões REST, utilizando Node.js e Express.
- Arquitetura MSC: Organização da aplicação em camadas (Model-Service-Controller), separando responsabilidades e melhorando a manutenção do código.
- MySQL: Utilização de um banco de dados relacional para armazenar e manipular informações de produtos e vendas.
- Validações e Testes: Implementação de validações para garantir a integridade dos dados e desenvolvimento de testes unitários para cobrir o comportamento da aplicação.
- Testes Automatizados: Utilização do Mocha para testar as funcionalidades da API, com foco em cobrir as camadas da aplicação e simular interações com o banco de dados.
Este projeto foi uma excelente oportunidade para aplicar conceitos fundamentais do desenvolvimento backend, incluindo a criação de APIs RESTful, validações de dados, e a importância dos testes automatizados no ciclo de desenvolvimento de software.
-
Express - Framework para Node.js, utilizado para gerenciar rotas e middlewares na criação da API.
-
Body-parser - Middleware usado para manipular o corpo das requisições HTTP, facilitando a leitura de JSON e outros formatos.
-
Express-async-errors - Módulo que simplifica o tratamento de erros em rotas assíncronas no Express.
-
Joi - Biblioteca para validação de dados no backend.
-
MySQL2 - Cliente MySQL para Node.js com suporte a promessas, utilizado para conectar e manipular o banco de dados MySQL.
-
Mocha - Framework de testes JavaScript utilizado para realizar testes unitários.
-
Chai - Biblioteca de asserções utilizada em conjunto com Mocha para validar os resultados dos testes.
-
Chai-http - Plugin do Chai para fazer requisições HTTP nos testes.
-
Frisby - Biblioteca para testar APIs RESTful.
-
Jest - Framework de testes JavaScript com suporte a mocks e spies.
-
Sinon - Ferramenta para criar mocks, stubs e spies em testes.
-
Sinon-chai - Extensão para integração entre Sinon e Chai.
-
NYC - Ferramenta de cobertura de código, utilizada para medir o percentual de código testado.