ANÚNCIO

~/questoes/programacao

Qual é a correspondência correta entre métodos do Controller refatorado e métodos do Repository?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Programação CRUD Intermediario
Aula de referência Curso de Node JS Aula 11 Refatorar para o MVC Pattern Repository
Para fixar

Mapeamento de Métodos: Controller e Repository no Padrão MVC

Conceito central

No padrão Repository, cada método do Controller (index, show, store) mapeia para um método específico do Repository que encapsula a lógica de acesso aos dados. Essa correspondência padronizada segue as convenções REST e CRUD, garantindo que o Controller delegue todas as operações de banco de dados ao Repository.

Por que essa resposta faz sentido

A alternativa C está correta porque estabelece o mapeamento padrão: index chama findAll para listar todos os registros, show chama findById para buscar um registro específico, e store chama create para inserir novos dados. Esse padrão segue as convenções REST e mantém a separação de responsabilidades entre Controller e Repository.

Armadilhas comuns

  • Confundir o propósito de cada método HTTP: GET é leitura (findAll ou findById), POST é criação (create), PUT é atualização (update). Cada um mapeia para um método Repository diferente.
  • Achar que index e show fazem a mesma coisa. Index lista vários registros (findAll), enquanto show busca um registro específico por ID (findById) — operações distintas.
  • Esquecer que o Repository encapsula SQL, então o Controller não precisa saber como findAll ou findById funcionam internamente. O mapeamento é apenas sobre qual método chamar, não como ele é implementado.

Entenda as alternativas

A

Esta alternativa inverte e mistura os métodos. Por exemplo, index deveria listar tudo (findAll), não criar (create). Show deveria buscar por ID (findById), não atualizar (update). Essa confusão viola as convenções REST e a lógica do padrão CRUD.

B

Embora mencione findById e create de forma correta, inverte o mapeamento de show (que deveria chamar findById, não findAll) e index (que deveria chamar findAll, não findById). A ordem dos mapeamentos é fundamental para o padrão funcionar.

C

Este é o mapeamento correto e segue as convenções REST. Index = findAll (lista), show = findById (detalhe), store = create (criação). Essa correspondência é o padrão adotado em refatorações profissionais com Repository Pattern.

D

Esta alternativa simplifica demais a estrutura, afirmando que métodos diferentes usam os mesmos métodos do Repository. Cada operação HTTP precisa de um método específico no Repository para manter clareza, rastreabilidade e segurança nas operações de banco de dados.

Dica prática: Crie uma tabela mental simples: INDEX → findAll, SHOW → findById, STORE → create, UPDATE → update, DELETE → delete. Quando refatorar um Controller, sempre consulte esta tabela antes de escolher qual método do Repository chamar. Isso evita erros e mantém a consistência em toda sua API.

Revise pensando: Se você precisa exibir um único usuário pelo seu ID, qual método do Controller e qual método do Repository você usaria?