Resumo
Estruturação do padrão MVC em Node.js
Esta aula prática aborda a refatoração de uma API REST desenvolvida em Node.js para seguir o padrão arquitetural MVC (Model-View-Controller). A refatoração é um passo essencial no desenvolvimento de aplicações escaláveis e bem organizadas, permitindo que o código fique mais legível, mantível e preparado para crescimento futuro. O instrutor guia o aprendiz através de cada etapa necessária para transformar uma aplicação com código desorganizado em uma estrutura profissional, seguindo as convenções amplamente adotadas na comunidade JavaScript.
Reorganização das pastas do projeto
O primeiro passo da refatoração envolve criar uma arquitetura de diretórios adequada. Dentro da pasta src, é criada uma nova pasta app que servirá como container principal para toda a lógica de negócio. Dentro dessa pasta app, são criadas subdivisões específicas: a pasta controllers, que armazenará os controladores responsáveis por receber as requisições HTTP e coordenar as respostas, e a pasta repositories, destinada a centralizar as operações com o banco de dados. A pasta infra, que anteriormente continha as configurações de banco de dados, é renomeada para database e movida para dentro de app, mantendo todo o código de infraestrutura junto e organizado. Essa reorganização melhora significativamente a navegação no projeto e facilita a localização de componentes específicos.
Criação e configuração do Controller
O SeleçãoController é criado como uma classe JavaScript que encapsula toda a lógica relacionada às operações de seleção na API. Esse arquivo exporta a classe através de export default, facilitando sua importação em outras partes da aplicação. Dentro do controller, são implementados os cinco métodos CRUD fundamentais: index, para listar todos os registros; show, para exibir um registro específico; store, para criar novos registros; update, para modificar registros existentes; e delete, para remover registros. O padrão Singleton é mencionado como uma abordagem que garante que apenas uma instância do controller seja criada e reutilizada em toda a aplicação, evitando desperdício de recursos e potenciais inconsistências.
Migração das rotas para o Controller
As arrow functions que anteriormente estavam diretamente nas definições de rota no arquivo app.js são removidas e movidas para os métodos correspondentes dentro do controller. Essa separação de responsabilidades é fundamental para o padrão MVC: as rotas tornam-se apenas definições de endpoints HTTP, enquanto a lógica de negócio reside exclusivamente no controller. Os ajustes necessários são realizados para garantir que cada método do controller receba os parâmetros corretos (request, response) e funcione de maneira isolada e testável. O arquivo app.js torna-se significativamente mais limpo, contendo apenas as definições de rota e as configurações gerais da aplicação.
Atualização de imports e configurações
Durante a refatoração, os caminhos de importação precisam ser atualizados para refletir a nova estrutura de diretórios. O arquivo app.js deve importar corretamente o novo SeleçãoController e também a conexão com o banco de dados, que agora está localizada em app/database. Dentro do controller, é necessário fazer o import da conexão para que os métodos possam executar as operações no banco de dados. Esses ajustes, embora pareçam pequenos, são críticos para o funcionamento correto da aplicação e para evitar erros de módulos não éncontrados. A precisão nesses imports reflete o cuidado com a arquitetura do projeto.
Testagem das rotas refatoradas
Após concluir toda a refatoração, a testagem das rotas é realizada utilizando o Insomnia, uma ferramenta de teste de APIs REST. Cada uma das cinco operações CRUD é testada individualmente para garantir que a migração para o padrão MVC não introduziu erros ou comportamentos inesperados. Os testes incluem verificar se o método index retorna a lista completa de seleções, se show recupera um registro específico, se store cria novos registros corretamente, se update modifica dados existentes e se delete remove registros como esperado. Essa fase de validação é crucial para assegurar que a refatoração foi bem-sucedida e que a API continua funcionando conforme específicado.
Limpeza de código desnecessário
Durante todo o processo de refatoração, comentários desnecessários e trechos de código obsoleto são removidos do arquivo app.js e de outros arquivos. Essa limpeza contribui para melhorar a legibilidade do código e reduzir a complexidade cognitiva ao ler o projeto. Um código mais limpo é mais fácil de entender, manter e debugar no futuro, tanto para o desenvolvedor original quanto para outros membros da equipe que possam trabalhar no projeto. A aula também menciona que, embora async await ainda não tenha sido implementado nesta etapa, ele será abordado em aulas futuras, reconhecendo que a refatoração é um processo gradual e iterativo.
Boas práticas e preparação futura
A conclusão desta aula deixa claro que a refatoração para MVC é um investimento fundamental em qualidade de código e arquitetura. O padrão MVC, amplamente utilizado em frameworks modernos como Express, Laravel e Django, oferece uma base sólida para aplicações que crescem em complexidade. A estrutura criada nesta aula não apenas melhora a organização atual, mas também prepara a aplicação para futuras melhorias, como implementação de async await, adição de layers de validação, middlewares customizados e testes automatizados. Compreender e aplicar corretamente esse padrão é essencial para qualquer desenvolvedor aspirando a criar aplicações profissionais e mantíveis.
O que você vai aprender
- Refatorar uma API REST para o padrão MVC
- Organizar estrutura de pastas (controllers, repositories, database)
- Criar e configurar controllers com métodos CRUD
- Atualizar importações e caminhos de módulos
- Testar requisições HTTP após refatoração
- Aplicar padrão Singleton em controladores
Conceitos abordados
Tecnologias utilizadas
Capítulos 9 marcações
- Introdução e objetivo da aula
- Criação da estrutura de pastas MVC
- Reorganização de diretórios (app, controllers, database)
- Criação do SeleçãoController
- Implementação dos métodos CRUD no controller
- Migração de rotas para o controller
- Atualização de imports e caminhos
- Testagem das rotas no Insomnia
- Considerações finais e próximos passos
Próximo vídeo sugerido
Avaliações
Ainda não há avaliações. Seja o primeiro a avaliar esta aula.