ANÚNCIO

Curso de Node JS Aula 10 Refatorar para o MVC Controller e ajustes

Aprenda a refatorar uma API REST Node.js para o padrão MVC, criando controllers, reorganizando pastas e implementando boas práticas de arquitetura.

⏱ 19min 👁 6.896 visualizações 📅 janeiro 2, 2023

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

  1. Introdução e objetivo da aula
  2. Criação da estrutura de pastas MVC
  3. Reorganização de diretórios (app, controllers, database)
  4. Criação do SeleçãoController
  5. Implementação dos métodos CRUD no controller
  6. Migração de rotas para o controller
  7. Atualização de imports e caminhos
  8. Testagem das rotas no Insomnia
  9. Considerações finais e próximos passos

Próximo vídeo sugerido

Avaliações

Avaliação dos alunos 0.0
0 avaliações
Avalie esta aula

Ajude outros alunos a entenderem se esta aula foi útil.

Ainda não há avaliações. Seja o primeiro a avaliar esta aula.