Skip to content

Primeiro endpoint

Vamos começar pelo menor programa Empilha possível. Nesta página você instala o framework, cria uma rota e vê uma resposta no terminal.

Antes de começar

Você precisa do Bun 1.3 ou mais recente.

Crie o projeto

Em uma pasta vazia:

sh
bun init -y
bun add empilha

Ative decorators no tsconfig.json:

json
{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "experimentalDecorators": true,
    "strict": true,
    "noEmit": true,
    "types": ["bun"]
  }
}

Crie uma rota

Crie src/app.ts:

ts
import { createApplication, defineModule, Controller, Get } from "empilha";

@Controller("/")
class AppController {
  @Get("/")
  index() {
    return { message: "Minha primeira API Empilha" };
  }
}

const AppModule = defineModule({
  name: "app",
  controllers: [AppController],
});

const app = await createApplication(AppModule);

await app.run({ port: 4000 });

Inicie:

sh
bun src/app.ts

O terminal mostra:

text
🚀 API: http://localhost:4000

Faça uma requisição em outro terminal:

sh
curl http://localhost:4000
json
{
  "message": "Minha primeira API Empilha"
}

Leia o código em quatro frases

  1. @Controller("/") dá um prefixo às rotas da classe.
  2. @Get("/") transforma index() em uma rota GET.
  3. createApplication(AppModule) compila o módulo e registra seus controllers.
  4. run({ port: 4000 }) abre a porta HTTP.

Importar uma classe não registra nada globalmente. A aplicação conhece somente os controllers declarados no AppModule.

Guarde esta forma

text
descreva com decorators → defineModule() → createApplication() → run()

Tudo o que você aprender daqui em diante se encaixa dentro do módulo, na configuração da aplicação ou depois da compilação.

Recursos HTTP

Feito para APIs que continuam simples quando crescem.