Como Começar com ElysiaJS, OpenAPI e Bun em 2025: Guia Completo

Ashley Goolam

Ashley Goolam

8 novembro 2025

Como Começar com ElysiaJS, OpenAPI e Bun em 2025: Guia Completo

Escolher o framework certo pode fazer toda a diferença na construção de APIs eficientes e escaláveis. ElysiaJS, um framework Node.js leve, combina excepcionalmente bem com o runtime de alta performance do Bun e a padronização do OpenAPI para documentação e geração de clientes. Essa combinação oferece aos desenvolvedores um caminho simplificado para criar serviços RESTful robustos com sobrecarga mínima. À medida que as APIs se tornam a espinha dorsal das aplicações modernas, começar com ElysiaJS, OpenAPI e Bun te capacita a entregar endpoints type-safe e bem documentados rapidamente. Neste guia, abordaremos tudo, desde os fundamentos do ElysiaJS até a configuração prática, etapas de instalação em diversas plataformas e exemplos de código práticos. Este tutorial ajudará você a integrar o elysiajs com o openapi de forma contínua, aproveitando a velocidade do Bun para uma experiência de desenvolvimento ideal.

💡
Quer uma ótima ferramenta de Teste de API que gera documentação de API bonita?

Quer uma plataforma integrada e completa para sua Equipe de Desenvolvedores trabalhar com produtividade máxima?

Apidog atende a todas as suas demandas e substitui o Postman por um preço muito mais acessível!
botão

O que é ElysiaJS?

ElysiaJS é um framework web Node.js leve e rápido, projetado para ser minimalista, mas altamente extensível para a construção de APIs RESTful. Ele enfatiza uma pequena superfície de ataque, suporte limpo a TypeScript e uma API intuitiva para definir rotas, middlewares e plugins. O ElysiaJS visa entregar performance com uma experiência amigável ao desenvolvedor e forte integração com OpenAPI de fábrica. Suas principais forças incluem suporte OpenAPI de primeira classe, um ecossistema de plugins e um design que favorece a velocidade e a simplicidade sem te prender a abstrações pesadas. Isso torna o ElysiaJS particularmente atraente para desenvolvedores que desejam focar na lógica em vez de código boilerplate, garantindo que suas APIs sejam fáceis de documentar e consumir através das especificações OpenAPI.

Por que escolher ElysiaJS em 2025?

A escolha do ElysiaJS traz diversos benefícios atraentes que aprimoram seu processo de desenvolvimento de API.

  1. A performance se destaca com seu runtime enxuto e foco no tratamento rápido de rotas e baixa sobrecarga, permitindo que as aplicações escalem eficientemente sob carga. A prontidão integrada do OpenAPI significa que você pode gerar e servir especificações OpenAPI sem esforço, o que simplifica a documentação da API e a geração de clientes – crucial para equipes que colaboram em microsserviços ou APIs públicas.
  2. A experiência do desenvolvedor é outro destaque: o ElysiaJS é amigável ao TypeScript, com definições de rota concisas e uma arquitetura modular que suporta o crescimento à medida que seu projeto se expande. Seu ecossistema inclui um conjunto crescente de plugins para suporte OpenAPI, documentação e utilitários de teste, integrando-se suavemente com ferramentas existentes. O design OpenAPI-first garante consistência entre seu código e a documentação, reduzindo os esforços de manutenção.
Site oficial do ElysiaJS

O que é Bun?

Bun é um runtime JavaScript rápido, gerenciador de pacotes e bundler tudo em um. Ele foi projetado para ser um substituto direto para o Node.js em muitos casos, oferecendo tempos de inicialização mais rápidos e ferramentas eficientes. O Bun pode acelerar os fluxos de trabalho de desenvolvimento, a instalação de dependências e a execução de scripts, tornando-o um par popular com frameworks modernos como o ElysiaJS. Ao lidar com múltiplos papéis no ecossistema JavaScript, o Bun reduz a troca de contexto, permitindo que os desenvolvedores se concentrem na construção em vez de gerenciar ferramentas. Sua compatibilidade com APIs Node garante uma transição suave, enquanto o suporte nativo a TypeScript e JSX aumenta a produtividade em projetos ElysiaJS.

Runtime Bun JS

Instalando Bun (MacOS, Linux e Windows)

Colocar o Bun em funcionamento é simples em todas as plataformas, garantindo que você possa emparelhá-lo rapidamente com o ElysiaJS.

  1. Para MacOS, abra o Terminal e execute o script de instalação: curl -fsSL https://bun.sh/install | bash. Isso baixa e configura o Bun, adicionando-o ao seu PATH. Verifique com bun --version.
  2. No Linux, use o mesmo comando curl no seu terminal: curl -fsSL https://bun.sh/install | bash. Ele suporta as principais distribuições como Ubuntu e Fedora. Reinicie seu shell ou atualize seu perfil, então verifique bun --version para confirmar.
  3. Usuários de Windows podem instalar via PowerShell como administrador: powershell -c "irm bun.sh/install.ps1 | iex". Isso cuida da configuração, incluindo a integração com Chocolatey, se necessário. Inicie o PowerShell novamente e execute bun --version para verificar.
instalar bun no windows

Em todos os casos, o Bun é instalado em segundos e está pronto para projetos ElysiaJS — nenhuma configuração adicional é necessária para uso básico.

Começando com ElysiaJS

Iniciar um projeto ElysiaJS começa com alguns pré-requisitos:

Para inicializar, use o Bun para velocidade: bun create elysia my-api. Isso estrutura uma base com package.json e suporte a TypeScript.

usar bun para criar um projeto elysia

Sem o Bun, execute npm create elysia my-api via npm. Navegue até a pasta com cd my-api, e você estará pronto para definir as rotas.

A configuração mínima do ElysiaJS incentiva a prototipagem rápida — importe o módulo principal, defina os manipuladores e escute em uma porta. Essa base escala facilmente, integrando OpenAPI para documentação desde o início.

Instalando e Configurando ElysiaJS

A instalação é uma linha de comando assim que seu runtime estiver pronto. Com Bun: bun install elysia.

usando bun para instalar elysia

Para npm: npm install elysia. Se estiver usando TypeScript, adicione @types/node para completude.

A configuração envolve a criação de um arquivo de entrada, index.ts:

import { Elysia } from "elysia";

const app = new Elysia().get("/", () => "Hello Elysia").listen(3000);

console.log(
  `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
);

Execute com Bun: bun run index.ts, ou Node: npx ts-node index.ts. Visite "http://localhost:3000" para ver a resposta. Este aplicativo básico confirma a simplicidade do ElysiaJS — estenda-o com middlewares ou plugins conforme necessário.

usando bun para rodar projeto elysia

Integrando ElysiaJS com OpenAPI

O suporte a OpenAPI do ElysiaJS brilha através de plugins, permitindo especificações auto-geradas a partir de suas rotas. Instale o plugin: bun add @elysiajs/openapi (ou equivalente npm).

instalar openapi no elysia com bun

Configure em seu aplicativo:

import { Elysia } from 'elysia'
import { openapi, fromTypes } from '@elysiajs/openapi'

export const app = new Elysia()
    .use(
        openapi({
            references: fromTypes() 
        })
    )
    .get(
        '/pets',
        () => [
            { id: 1, name: 'Fluffy' },
            { id: 2, name: 'Spot' }
        ],
        ({
            summary: 'Get all pets',
            responses: { 200: { description: 'Success' } }
        } as any)
    )
    .listen(3000)

Acesse a documentação em "/openapi" ou "/docs" (ou seja, "http://localhost:3000/openapi"), onde o Swagger UI renderiza esquemas interativos. O ElysiaJS infere tipos dos manipuladores, estreitando o alinhamento entre código e especificação. Para configurações avançadas, gere a partir de TypeScript usando ferramentas do ecossistema, garantindo que o elysiajs com openapi evolua com sua base de código.

usando docs openapi com elysiajs

Clique em "Test Request" para testar o endpoint de API de exemplo "Pets" que acabamos de criar.

testando o endpoint da api de pets com openapi

Exemplo de Código: Construindo e Testando um Aplicativo ElysiaJS Básico

Testar o ElysiaJS começa com um aplicativo simples. Expanda o "hello world":

import { Elysia } from 'elysia'

const app = new Elysia()
  .get('/', () => 'Hello from ElysiaJS!')
  .post('/echo', ({ body }) => body, {
    body: t.Object({ message: t.String() })
  })
  .listen(3000, () => console.log('Server listening on http://localhost:3000'))

Execute e teste com curl: curl -X POST http://localhost:3000/echo -H "Content-Type: application/json" -d "{\"message\": \"Test\"}". Espere a resposta ecoada.

testando elysia com curl

Para testes de unidade, use bun:test. Crie uma pasta "test" no diretório raiz do seu projeto e adicione um arquivo index.test.ts com o seguinte código:

import { describe, expect, it } from 'bun:test'
import { Elysia } from 'elysia'

describe('Elysia', () => {
    it('returns a response', async () => {
        const app = new Elysia().get('/', () => 'hi')

        const response = await app
            .handle(new Request('http://localhost/'))
            .then((res) => res.text())

        expect(response).toBe('hi')
    })
})

Para executar os testes, basta usar o comando: bun test.

executando testes no elysiajs com bun test

Isso valida a funcionalidade principal, confirmando a confiabilidade do ElysiaJS.

Exemplo de Código: ElysiaJS com OpenAPI em Ação

Para elysiajs com openapi, construa uma API de pets:

import { Elysia, t } from 'elysia'
import { openapi, fromTypes } from '@elysiajs/openapi'

const app = new Elysia()
  .use(
    openapi({
      references: fromTypes() 
    })
  )
  .get('/pets', () => [
    { id: 1, name: 'Fluffy', type: 'Cat' },
    { id: 2, name: 'Spot' }
  ], ({
    summary: 'List pets',
    responses: {
      200: {
        description: 'Success',
        content: {
          'application/json': {
            schema: {
              type: 'array',
              items: { type: 'object', properties: { id: { type: 'integer' }, name: { type: 'string' }, type: { type: 'string' } } }
            }
          }
        }
      }
    }
  } as any))
  .post('/pets', ({ body }) => ({ id: Date.now(), ...body }), {
    body: t.Object({ name: t.String(), type: t.String() }),
    summary: 'Create pet',
    responses: { 200: { description: 'Created' } }
  })
  .listen(3000, () => console.log('Server listening on http://localhost:3000'))
import { Elysia, t } from 'elysia'
import { openapi, fromTypes } from '@elysiajs/openapi'

const app = new Elysia()
  .use(
    openapi({
      references: fromTypes() 
    })
  )
  .get('/pets', () => [
    { id: 1, name: 'Fluffy', type: 'Cat' },
    { id: 2, name: 'Spot' }
  ], ({
    summary: 'List pets',
    responses: {
      200: {
        description: 'Success',
        content: {
          'application/json': {
            schema: {
              type: 'array',
              items: { type: 'object', properties: { id: { type: 'integer' }, name: { type: 'string' }, type: { type: 'string' } } }
            }
          }
        }
      }
    }
  } as any))
  .post('/pets', ({ body }) => ({ id: Date.now(), ...body }), {
    body: t.Object({ name: t.String(), type: t.String() }),
    summary: 'Create pet',
    responses: { 200: { description: 'Created' } }
  })
  .listen(3000, () => console.log('Server listening on http://localhost:3000'))

Teste o POST: curl -X POST http://localhost:3000/pets -H "Content-Type: application/json" -d '{"name": "Scooby Doo", "type": "Dog"}'. Visite /openapi para a documentação Swagger, verificando esquemas e caminhos.

testando requisição post no elysia com bun

Dicas Práticas para Prontidão de Produção

A segurança de tipos é primordial: Aproveite os tipos TypeScript para corpos de requisição, respostas e parâmetros de rota para melhorar a confiabilidade e a precisão da geração OpenAPI. A observabilidade exige a adição de middlewares de logging, métricas e tratamento de erros para monitorar o comportamento da API. As medidas de segurança incluem a implementação de controles CORS, validação de entrada, limitação de taxa e autenticação conforme necessário. O empacotamento envolve o uso das etapas de construção de produção do Bun ou do seu bundler para produzir um pacote de implantação enxuto. A documentação exige manter a especificação OpenAPI sincronizada com o código para garantir que os SDKs do cliente e a documentação permaneçam atualizados.

Perguntas Frequentes

P1: O ElysiaJS é adequado para aplicações em larga escala?
R: Sim, seu design modular e foco em performance o tornam escalável para APIs empresariais.

P2: O ElysiaJS exige TypeScript?
R: Não, mas é altamente recomendado para geração de OpenAPI com segurança de tipos.

P3: Como o Bun se compara ao Node.js com ElysiaJS?
R: O Bun oferece instalações e execuções mais rápidas, mas o Node.js funciona se você preferir a familiaridade.

P4: Posso gerar especificações OpenAPI a partir de código existente?
R: Absolutamente, usando plugins ElysiaJS que inferem a partir das definições de rota.

P5: Quais frameworks de teste combinam melhor com o ElysiaJS?
R: Apidog, Vitest ou Jest para testes de unidade, com Supertest para simulações de API.

testando requisições GET do ElysiaJS no Apidog
Testando Requisição GET do ElysiaJS no Apidog
testando requisições POST do elysiajs no apidog
Testando Requisição POST do ElysiaJS no Apidog

Conclusão: Construa APIs Mais Inteligentes com ElysiaJS, OpenAPI e Bun

ElysiaJS, com sua mistura de velocidade e simplicidade, combinado com a eficiência de runtime do Bun e o poder de documentação do OpenAPI, forma uma pilha atraente para o desenvolvimento de APIs. Da instalação aos testes, este guia o equipou para começar a construir. Experimente os exemplos, refine suas rotas e veja seus projetos prosperarem — o ElysiaJS está pronto para impulsionar sua próxima criação.

botão
Interface de usuário do Apidog

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs