Controladores

Controllers são responsáveis por lidar com requisições HTTP e WebSocket na sua aplicação. Eles servem como ponto de entrada para requisições externas e atuam como ponte entre a camada de transporte e sua lógica de negócio.

Propósito

Controllers DEVEM realizar apenas estas tarefas específicas:

  1. Validar a entrada da camada de transporte - Verificar autenticação, autorização e formato de entrada

  2. Chamar componentes de lógica - Delegar a lógica de negócio para os componentes de lógica apropriados

  3. Transformar a entrada - Converter dados da requisição em parâmetros para chamadas dos componentes de lógica

  4. Lidar com erros - Capturar e responder adequadamente a erros originados pelos componentes de lógica

circle-exclamation

Localização

Todos os controllers DEVEM ser colocados sob o /src/controllers diretório e serem nomeados em referência à ação que executam.

src/
└── controllers/
    ├── users/
    │   ├── get-user.ts
    │   ├── create-user.ts
    │   └── update-user.ts
    ├── content/
    │   ├── publish-content.ts
    │   └── delete-content.ts
    └── health.ts

Estrutura do Controller

Manipulador HTTP Básico

Manipulador de Requisição POST

Manipulador de Parâmetros de Query

Requisitos de Entrada

Todas as chaves de entrada recebidas através dos controllers (corpo JSON, parâmetros de query, parâmetros de URL, headers, etc.) DEVEM estar em lowercase para evitar problemas de casing ao processar dados.

Parâmetros com Múltiplas Palavras

Parâmetros com múltiplas palavras DEVEM ser definidos usando snake_case.

triangle-exclamation
circle-check

Exemplo

Tratamento de Erros

Respostas de Erro Padrão

Controllers devem retornar formatos de resposta de erro consistentes:

Mapeamento de Erros

Mapear erros de domínio para códigos HTTP apropriados:

Autenticação e Autorização

Verificação de Autenticação

Verificação de Autorização

Boas Práticas

1. Manter Controllers Enxutos

Controllers devem ser invólucros enxutos ao redor dos componentes de lógica:

2. Validar Cedo

Validar e falhar rapidamente:

3. Usar Segurança de Tipos

Aproveite o TypeScript para segurança de tipos:

4. Fazer logs adequados

Registrar eventos e erros importantes:

Testando Controllers

Veja a Testing Services (WKC) documentação para orientação sobre testes de integração.

Atualizado