Back

Primeiros Passos com HonoJS para APIs Web Leves

Primeiros Passos com HonoJS para APIs Web Leves

Construir APIs web modernas não deveria exigir frameworks pesados ou configurações complexas. Se você está procurando uma alternativa rápida e leve ao Express ou Koa que funciona em múltiplos runtimes JavaScript, o HonoJS pode ser exatamente o que você precisa.

Principais Pontos

  • HonoJS é um framework web ultrarrápido que executa em qualquer runtime JavaScript incluindo Node.js, Bun, Deno e Cloudflare Workers
  • Construído sobre Web Standards como Request, Response e Fetch API para máxima portabilidade
  • Tamanho de bundle mínimo abaixo de 20KB com melhor performance que o Express
  • Inclui middleware essencial para CORS, logging e compressão prontos para uso

O Que Torna o HonoJS Diferente

HonoJS é um framework web pequeno e ultrarrápido construído sobre Web Standards. Diferentemente dos frameworks tradicionais do Node.js, ele executa em qualquer runtime JavaScript—Node.js, Bun, Deno, Cloudflare Workers, AWS Lambda e muito mais. Esta portabilidade vem de sua fundação em APIs Web padrão como Request, Response e Fetch.

import { Hono } from 'hono'
const app = new Hono()

app.get('/', (c) => c.text('Hello Hono!'))

export default app

Essa é uma aplicação HonoJS completa. Sem boilerplate, sem configuração complexa—apenas JavaScript moderno e limpo.

Configurando Sua Primeira API HonoJS

Vamos construir uma API REST simples para ver o HonoJS em ação. Primeiro, crie um novo projeto:

npm create hono@latest my-api

Escolha seu runtime preferido (Node.js, Bun ou Cloudflare Workers). Para este exemplo, usaremos Node.js:

cd my-api
npm install
npm run dev

Seu servidor agora está executando em http://localhost:3000.

Construindo Rotas REST com HonoJS

HonoJS usa uma sintaxe de roteamento familiar que parece natural se você já usou Express:

import { Hono } from 'hono'
const app = new Hono()

// Endpoint GET
app.get('/api/users', (c) => {
  const users = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' }
  ]
  return c.json(users)
})

// Endpoint POST com parsing de JSON
app.post('/api/users', async (c) => {
  const body = await c.req.json()
  // Em produção, salvar no banco de dados
  return c.json({ message: 'User created', data: body }, 201)
})

// Rotas dinâmicas
app.get('/api/users/:id', (c) => {
  const id = c.req.param('id')
  return c.json({ id, name: 'User ' + id })
})

export default app

O objeto Context (c) fornece tudo que você precisa: dados da requisição, helpers de resposta e utilitários para headers, cookies e muito mais.

Middleware para APIs Prontas para Produção

HonoJS inclui middleware essencial pronto para uso. Aqui está como adicionar CORS, logging e compressão:

import { Hono } from 'hono'
import { cors } from 'hono/cors'
import { logger } from 'hono/logger'
import { compress } from 'hono/compress'

const app = new Hono()

// Aplicar middleware
app.use('*', logger())
app.use('*', cors())
app.use('*', compress())

// Suas rotas aqui
app.get('/api/health', (c) => c.json({ status: 'ok' }))

export default app

Criar middleware personalizado é direto:

// Middleware de autenticação simples
const authMiddleware = async (c, next) => {
  const token = c.req.header('Authorization')
  if (!token || token !== 'Bearer secret-token') {
    return c.json({ error: 'Unauthorized' }, 401)
  }
  await next()
}

// Aplicar a rotas específicas
app.use('/api/protected/*', authMiddleware)
app.get('/api/protected/data', (c) => {
  return c.json({ secret: 'This is protected data' })
})

Portabilidade de Runtime: Deploy em Qualquer Lugar

Uma das maiores vantagens do HonoJS é sua flexibilidade de runtime. O mesmo código funciona em diferentes plataformas com mudanças mínimas:

Para Cloudflare Workers:

export default app

Para Node.js:

import { serve } from '@hono/node-server'
serve({ fetch: app.fetch, port: 3000 })

Para Bun:

export default { port: 3000, fetch: app.fetch }

Isso significa que você pode começar o desenvolvimento localmente e fazer deploy em edge locations sem reescrever sua API.

Estendendo com Integração de Banco de Dados

Aqui está um exemplo rápido usando Drizzle ORM com HonoJS:

import { Hono } from 'hono'
import { drizzle } from 'drizzle-orm/better-sqlite3'
import Database from 'better-sqlite3'
import { postsTable } from './schema'

const sqlite = new Database('app.db')
const db = drizzle(sqlite)

const app = new Hono()

app.get('/api/posts', async (c) => {
  const posts = await db.select().from(postsTable)
  return c.json(posts)
})

app.post('/api/posts', async (c) => {
  const { title, content } = await c.req.json()
  const result = await db.insert(postsTable).values({ title, content })
  return c.json(result, 201)
})

export default app

Benefícios de Performance

APIs HonoJS consistentemente superam o Express em benchmarks. Seu overhead mínimo e fundação em Web Standards significam tempos de resposta mais rápidos e menor uso de memória. Para deployments em edge, o tamanho pequeno do bundle (abaixo de 20KB) se traduz em cold starts mais rápidos.

Conclusão

HonoJS oferece uma abordagem refrescante para construir APIs web. Sua combinação de simplicidade, performance e flexibilidade de runtime o torna uma excelente escolha para aplicações JavaScript modernas. Seja construindo microsserviços, funções serverless ou APIs REST tradicionais, HonoJS fornece as ferramentas que você precisa sem o inchaço.

Comece com uma API simples, adicione middleware conforme necessário e faça deploy em qualquer lugar—esse é o jeito HonoJS.

Perguntas Frequentes

HonoJS tipicamente mostra performance 2-3x melhor que o Express em benchmarks devido ao seu overhead mínimo e fundação em Web Standards. Ele tem tempos de resposta mais rápidos, menor uso de memória e cold starts significativamente mais rápidos para deployments serverless.

Sim, HonoJS funciona com a maioria dos pacotes Node.js quando executando no Node.js ou Bun. No entanto, para runtimes edge como Cloudflare Workers, você precisará de pacotes que são compatíveis com Web Standards e não dependem de APIs específicas do Node.js.

Absolutamente. HonoJS é pronto para produção e usado por muitas empresas para APIs que lidam com milhões de requisições. Sua natureza leve, suporte nativo ao TypeScript e ecossistema abrangente de middleware o tornam ideal tanto para aplicações pequenas quanto de larga escala.

A curva de aprendizado é mínima. HonoJS usa padrões de roteamento e conceitos de middleware similares ao Express. As principais diferenças são o objeto Context ao invés de req/res e o uso de APIs Web Standards. A maioria dos desenvolvedores Express pode ser produtiva com HonoJS em questão de horas.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay