Skip to content

Ordem de execução

Esta página é uma referência rápida. Para aprender o modelo, leia Entenda o Empilha.

Bootstrap

text
new Empilha()
  → configure recursos
  → validate controllers e dependências
  → initialize metadata, DI, SQL, OpenAPI e rotas
  → listen
  → close

No uso comum:

ts
const app = new Empilha()
  .configure(config)
  .provide(Service)
  .use(plugin)
  .initialize([Controller]);

await app.run();

initialize() chama validate() automaticamente. Use as fases separadas somente em integrações avançadas.

Requisição

text
parse da URL
  → route matching
  → limite de concorrência
  → criação do request scope, quando necessário
  → leitura do body, quando necessário
  → middleware global
  → middleware do controller
  → middleware da rota
  → autenticação e autorização
  → validação do body
  → normalização e validação da query
  → resolução do controller
  → BEGIN, quando transacional
  → @BeforeSql
  → SQL
  → método do controller
  → COMMIT ou ROLLBACK
  → @AfterCommit
  → schema e serialização da resposta

@AfterResponse é uma variação: o scheduler aceita o trabalho, responde 202 e executa o método com o mesmo request scope.

Erros

Uma falha interrompe as próximas etapas e segue:

text
@Catch do controller
  → app.catch global
  → resposta padrão

Exceções de middleware participam do mesmo pipeline.

Resumo por recurso

RecursoMomento
@Body, @QueryParamsantes do controller e do SQL
@Useantes de autenticação e validação
@Identity, @Roles, @Guardantes de validação e SQL
@Sqlantes do método do controller
@Transactionenvolve SQL e controller
@AfterCommitdepois de commit bem-sucedido
@Returnsao produzir a resposta
@AfterResponsedepois que a tarefa é aceita, sem bloquear o HTTP

Feito para APIs que continuam simples quando crescem.