9.7.3 - Service Pattern (Padrão de Serviços)
O padrão Service (ou Service Layer) é uma prática muito comum no desenvolvimento de APIs para organizar melhor a lógica de negócio. Em vez de colocar toda a lógica diretamente nos controllers, ela é delegada para arquivos específicos chamados services.
🎯 Objetivo
Separar responsabilidades:
Controllers cuidam da requisição e resposta (entrada e saída).
Services cuidam da lógica do que deve ser feito (processamento e regras).
🔍 Exemplo prático
Suponha que você tenha um endpoint para registrar um novo usuário:
Controller (userController.js):
const userService = require('../services/userService');
const registerUser = async (req, res) => {
try {
const result = await userService.register(req.body);
res.status(201).json(result);
} catch (err) {
res.status(400).json({ error: err.message });
}
};
Service (userService.js):
const User = require('../models/userModel');
const register = async (userData) => {
// Aqui ficaria toda a lógica de validação, regras, salvamento etc.
const newUser = await User.create(userData);
return newUser;
};
module.exports = { register };
✅ Vantagens
Organização: código mais limpo e separado por função.
Reutilização: serviços podem ser usados em outros lugares (ex: outro controller).
Testabilidade: facilita testes unitários, pois a lógica está isolada.
Escalabilidade: projetos maiores precisam dessa separação para manter clareza.
Last updated