Backend Controller
Overview
Aplicar o padrão de controller como camada de entrada HTTP: receber request, validar parâmetros básicos, chamar use case e traduzir Result para resposta/exceção HTTP.
Guidelines
- Controller não implementa regra de domínio; delega para use case/query/repository conforme o fluxo existente.
- Definir rota e verbo com decorators (
@Get,@Post,@Patch,@Delete). - Usar
@UseGuards(JwtAuthGuard, RequirePermissionGuard)e@RequirePermission(...)quando endpoint protegido. - Extrair input com
@Body,@Param,@Query; normalizar tipos quando necessário (ex.:Number(...), boolean por string). - Mapear falhas de
Resultpara exceção HTTP adequada. - Retornar payload esperado pelo contrato; para operações sem corpo, retornar
voidcom@HttpCode(204|201)quando aplicável. - Seguir nomenclatura global: arquivos
*.controller.ts, pastas em kebab-case e nomes em minúsculo.
Workflow
- Definir rota base (
@Controller('...')) e segurança global por controller (quando fizer sentido). - Criar método por endpoint com decorators HTTP e permissões.
- Instanciar/chamar use case com dependências injetadas no controller.
- Tratar
result.isFailuree lançar exceção HTTP coerente. - Retornar
result.instanceouvoidconforme contrato. - Revisar consistência de status code e formato de erro.
References
Consultar references/controller-pattern.md para exemplos reais, checklist e armadilhas.
Consultar ../skills-standards.md para convenção global de nomenclatura.
Global Standards
- Consultar
../skills-standards.mdpara padroes globais de nomenclatura e convencoes gerais entre skills.