Hono
Hono는 Web Standards API(Fetch API, Request/Response)를 기반으로 한 경량 웹 프레임워크다. Node.js, Cloudflare Workers, Deno, Bun 등 다양한 런타임에서 동작하며, TypeScript 지원이 우수하다.
개요
| 항목 | 내용 |
|---|---|
| 기반 표준 | Web Standards (Fetch API) |
| 지원 런타임 | Node.js, Cloudflare Workers, Deno, Bun, AWS Lambda |
| 언어 | TypeScript 우선 설계 |
| 번들 크기 | 매우 작음 (~12KB) |
특징
Web Standards 기반
Node.js 전용 API 대신 표준 Web API(Request, Response)를 사용한다. 동일한 코드를 Node.js, Edge Runtime, Deno, Bun 등에서 실행할 수 있다.
TypeScript 우선
타입 안전한 라우트 핸들러와 미들웨어를 작성할 수 있다. RPC 기능을 통해 클라이언트에서 서버 함수를 타입 안전하게 호출할 수도 있다.
기본 사용법
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello World'))
app.get('/users/:id', (c) => {
const id = c.req.param('id')
return c.json({ id })
})
export default app라우팅
app.get('/path', handler)
app.post('/path', handler)
app.put('/path', handler)
app.delete('/path', handler)
// 라우터 그룹핑
const api = new Hono()
api.get('/users', handler)
const app = new Hono()
app.route('/api', api)미들웨어
// 전역 미들웨어
app.use('*', async (c, next) => {
console.log('Request:', c.req.url)
await next()
})
// 특정 경로 미들웨어
app.use('/api/*', authMiddleware)내장 미들웨어
| 미들웨어 | 기능 |
|---|---|
logger |
요청 로깅 |
cors |
CORS 설정 |
jwt |
JWT 인증 |
bearer-auth |
Bearer 토큰 인증 |
컨텍스트 (Context)
app.post('/echo', async (c) => {
const body = await c.req.json()
const query = c.req.query('page')
const header = c.req.header('Authorization')
return c.json({ body, query })
})Express와의 비교
| 항목 | Hono | Express |
|---|---|---|
| 기반 | Web Standards | Node.js HTTP |
| Edge 지원 | O | X |
| TypeScript | 우선 설계 | 타입 추가(별도) |
| 성능 | 높음 | 중간 |
| 생태계 | 성장 중 | 성숙 |
적합한 사용 사례
- Edge Runtime: Cloudflare Workers, Vercel Edge Functions
- 경량 API 서버: 번들 크기가 중요한 환경
- Next.js Route Handler: App Router의 API 라우트에서 Hono 활용 가능
- TypeScript 프로젝트: 타입 안전한 API 개발