Pular para conteúdo

Aula 06 - Services e Regras de Negócio 🧠

O Cérebro da Aplicação


Agenda 📅

  1. Por que separar as coisas?
  2. Responsabilidades do Service
  3. O Fluxo: Controller -> Service
  4. Tratamento de Erros Profissional
  5. DTOs: Protegendo os Dados
  6. Service vs ViewModel (Mobile)

1. O Problema: "Controller Gordo" 🍔

  • Lógica de negócio misturada com HTTP.
  • Código impossível de reutilizar.
  • Difícil de testar.

2. A Solução: Layered Architecture 🧱

  • Controller: Trata o transporte (HTTP).
  • Service: Trata a regra (O QUE fazer).

3. O que vai no Service? ⚖️

  • Validações complexas.
  • Cálculos de valores.
  • Envio de e-mails/notificações.
  • Integração com repositórios.

4. Tratamento de Erros ⚠️

  • O Service Lança (Throws).
  • O Controller Captura (Catches).
// Service
if (!saldo) throw new Error("Saldo Insuficiente");

// Controller
try { ... } catch (e) { res.status(400)... }

5. DTOs: Filtrando a Saída 📦

  • Nunca envie "tudo" do banco para o cliente.
  • Proteja campos sensíveis (Ex: senha_hash).
  • Melhore a performance (menos dados trafegados).

6. Service vs ViewModel 🆚

  • No Backend: Service é o cérebro.
  • No Mobile/Front: ViewModel é o cérebro.
  • Ambos servem para "limpar" a camada de visualização.

7. Prática: Validando um Cadastro 💻

  • Verificando se o e-mail é válido.
  • Verificando se o usuário já existe.
  • Lançando erros específicos.

Desafio: Onde colocar? ⚡

Se uma regra diz: "Usuários VIP ganham 20% de desconto", essa regra deve ficar no Controller ou no Service?


Resumo ✅

  • Controllers recebem, Services processam.
  • Mantenha seus Controllers "finos" (Slim Controllers).
  • Centralize as regras para facilitar a manutenção.
  • DTOs são as fronteiras dos dados.

Próxima Aula: Onde os dados vivem! 🗄️

Repositories e Banco de Dados

  • PostgreSQL e SQL básico.
  • Camada de persistência.

Dúvidas? 🧠