ANÚNCIO

~/questoes/programacao

Como o padrão MVC se relaciona com a estrutura de rotas, controllers e repositórios?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Curso de Node JS Aula 13 Usar Router e finalizar projeto
Para fixar

MVC com Repository: Organização de Rotas, Controllers e Repositórios

Conceito central

O padrão MVC organiza a aplicação em camadas distintas: as rotas definem os endpoints da API, os controllers gerenciam a lógica de negócio e processam as requisições, e os repositórios encapsulam toda comunicação com o banco de dados. Essa separação de responsabilidades torna o código mais limpo, testável e fácil de manter.

Por que essa resposta faz sentido

As rotas definem os endpoints (GET, POST, PUT, DELETE), os controllers recebem essas requisições e executam a lógica de negócio, e os repositórios isolam as operações do banco de dados. Essa divisão permite que cada camada tenha uma responsabilidade clara e específica.

Armadilhas comuns

  • Colocar lógica de negócio nas rotas (routes.js) em vez de nos controllers, deixando o código desorganizado.
  • Acessar o banco de dados diretamente nos controllers sem usar repositórios, criando código acoplado e difícil de testar.
  • Confundir a ordem de chamada: esquecer que middleware como express.json() deve ser registrado antes das rotas para funcionar corretamente.

Entenda as alternativas

A

Esta é a estrutura correta do padrão MVC com Repository. As rotas recebem as requisições HTTP, direcionam para os controllers que processam a lógica, e os controllers usam repositórios para acessar dados sem conhecer os detalhes da implementação do banco.

B

Esta alternativa inverte os papéis. Repositórios nunca definem endpoints, rotas não processam lógica de negócio, e controllers não devem executar operações no banco de dados. Cada camada tem responsabilidades bem definidas.

C

Controllers nunca devem definir rotas nem conectar diretamente ao banco de dados. Quando controllers acessam o banco sem intermediários, o código fica acoplado e difícil de testar. É exatamente para evitar isso que usamos repositórios.

D

Rotas não comunicam-se diretamente com repositórios ou banco de dados. Elas precisam passar pela camada de controllers, onde fica a lógica de negócio. Pular o controller quebra a separação de responsabilidades do padrão MVC.

Dica prática: Ao estruturar sua API, sempre pense: rotas recebem requisições e direcionam para controllers; controllers decidem o que fazer com a requisição; repositórios fazem a operação no banco. Se uma camada está fazendo coisa de outra, você desacoplou a arquitetura.

Revise pensando: Se você precisar alterar como busca dados no banco de dados, qual arquivo você deveria modificar: rotas, controllers ou repositórios?