Skip to content

Decorators

Use esta página para consulta. Os capítulos do guia apresentam cada decorator no contexto em que ele se torna necessário.

Controller e rotas

DecoratorAplicaçãoEfeito
@Controller(prefix, options?)classeprefixo, tags, middleware e auth compartilhados
@Get(path)métodorota GET
@Post(path)métodorota POST
@Put(path)métodorota PUT
@Patch(path)métodorota PATCH
@Delete(path)métodorota DELETE
@Use(...middlewares)classe ou métodomiddleware no alcance declarado

Opções de controller:

ts
type ControllerOptions = {
  tags?: readonly string[];
  middlewares?: readonly MiddlewareFn[];
  auth?: true | string | readonly string[];
};

Entrada

DecoratorAplicaçãoEfeito
@Param(name, typeOrSchema?)parâmetrolê um segmento da rota
@Query(name, typeOrSchema?)parâmetrolê um item da query string
@Header(name, typeOrSchema?)parâmetrolê um header
@Body(schema)parâmetro ou métodovalida JSON e opcionalmente injeta
@QueryParams(schema, defaults?)métodonormaliza e valida a query inteira
@Request()parâmetroinjeta RequestContext
@Context()parâmetroinjeta RequestScope
@Identity()parâmetroexige auth e injeta o payload
@Inject(token)construtor ou parâmetro de rotainjeta DI ou serviço de plugin

Param, Query e Header aceitam Number, Boolean ou schema TypeBox como segundo argumento.

Resposta

DecoratorEfeito
@Status(code)sobrescreve o status de sucesso
@Returns(schema)valida, serializa e documenta JSON
@Produces(contentType)define o content type; text/* produz texto

Segurança

DecoratorEfeito
@Identity()token válido, sem role obrigatória
@Roles(...roles)token válido com uma das roles
@Guard(handler)valida diretamente o bearer token

defineRoles() está disponível em empilha/decorators para criar helpers de role tipados.

SQL

DecoratorEfeito
@Sql(name, options?)associa uma query registrada
@Result("many" | "one" | "none")escolhe o valor extraído das linhas
@NotFoundWhenEmpty()transforma zero linhas em 404
@Transaction("read" | "write")envolve rota em transação
@BeforeSql(method?)executa preparação antes da query
@AfterCommit(method)executa hook depois do commit

Ciclo de vida e erros

DecoratorEfeito
@AfterResponse()responde 202 e agenda o método
@Catch(...ErrorTypes)trata tipos de erro no controller

Imports

Todos os decorators principais são exportados por:

ts
import { Controller, Get, Body, Returns } from "empilha";

Também podem ser agrupados:

ts
import { Controller, Get, Body, Returns } from "empilha/decorators";

Schemas:

ts
import { t, type Infer } from "empilha";

Feito para APIs que continuam simples quando crescem.