BUILT ON / WEB STANDARDS
HONOAPI
Web標準を、そのままAPIの土台にする
Honoは、RequestやResponse、HeadersといったWeb標準APIを中心に設計された、TypeScript向けの軽量Webフレームワークです。Cloudflare WorkersからNode.jsまで、実行基盤ごとの差異を意識することなく統一された感覚でAPIを構築できます。
受け取ったHTTPリクエストを、ルート・検証・処理・レスポンスへつなぎます。
CONTENTSこの記事の目次+
01 — POSITION
Hono APIとは
何か
Honoは、HTTPメソッドとURLパスをハンドラ関数へ結びつけ、ミドルウェアやコンテキストを活用してリクエストを柔軟に処理するWebフレームワークです。Web APIサーバー、BFF(Backend for Frontend)、プロキシ、エッジアプリケーションなどのバックエンドを、最小限のコードで構成できます。
02 — REQUEST LIFECYCLE
1リクエストを
4段階で見る
フレームワークは、HTTPをアプリの処理へつなぐ交通整理役です。
Web標準のRequest/Responseを扱い、ミドルウェアパイプラインを経て高速に応答。マルチランタイムに移植可能です。
要求を受け取る
ランタイムからWeb標準のRequestオブジェクトがアプリへ渡されます。
→ルートを選ぶ
HTTPメソッドとパスに一致するルーティングハンドラを特定します。
→共通処理を通す
ロギング、CORS制御、認証、入力バリデーションなどを順に適用します。
→結果を返す
ContextオブジェクトからJSONやテキストをWeb標準のResponseとして返します。
横断的な認証・ログ・エラー処理は、各ルートへ共通して組み込めます。
03 — CORE FEATURES
Hono APIを
特徴づける3点
同じAPIフレームワークでも、設計の中心に置くものが違います。
HTTPを共通語にする
Request、Response、URL、Headersなど、ブラウザやモダンランタイムが共有する標準APIをそのまま活用します。標準のResponseオブジェクトを直接返せるため、フレームワーク固有の癖がなく見通しの良い設計になります。
配置先を固定しない
Cloudflare Workers、Deno、BunなどではWeb標準のインターフェースでそのままネイティブに動作し、Node.jsでも公式アダプタを介して同じコードを実行できます。インフラ固有の処理を外側に逃がし、コアロジックをポータブルに保てます。
小さく始めて型を伸ばす
豊富な組み込みミドルウェアやZodなどの外部バリデータを必要に応じて柔軟に追加できます。さらにAppTypeとHono Clientを組み合わせることで、サーバーの入出力型をフロントエンドのTypeScriptクライアントへシームレスに共有できます。
04 — MINIMUM API
検証してJSONを返す
TypeScriptの型だけに頼らず、外部から届くJSONを実行時にも検証します。
import { Hono } from "hono"
import { zValidator } from "@hono/zod-validator"
import { z } from "zod"
const app = new Hono()
const taskSchema = z.object({
title: z.string().min(1),
priority: z.enum(["low", "high"]).default("low"),
})
const createTask = app.post(
"/tasks",
zValidator("json", taskSchema),
(c) => {
const input = c.req.valid("json")
return c.json({ id: "task_01", ...input }, 201)
}
)
export type AppType = typeof createTask
export default app01VALIDATE Zodで受信したJSONを実行時に厳密に検証
02CONTEXT 検証済みの型安全な値をc.req.validから取得
03RPC TYPE AppTypeの型定義をクライアント側でそのまま再利用可能
05 — GOOD FIT
どんなAPIに
向いているか
TypeScriptの型資産を活かしつつ、エッジワーカーやサーバーレスなどのモダンな実行環境で素早くAPIを動かしたい場面に最適です。
利用者の近くで返したい
認証ゲートウェイ、高速なリダイレクト処理、軽量な集約APIなど、レイテンシを重視してエッジに配置する構成と抜群の相性を誇ります。
フロントと型を共有したい
TypeScriptのモノレポ構成において、フロントエンド専用のBFFとクライアントの間で入出力の型安全性を一貫して保ちたい場面に向いています。
配置先を後から選びたい
Web標準の仕様に準拠して実装することで、Cloudflare WorkersからNode.jsコンテナへの移行など、将来のインフラ変更にも柔軟に対応できます。
06 — WATCH OUT
採用前に知る
3つの注意点
フレームワークが自動で担う範囲と、アプリ側で決める範囲を分けます。
TypeScriptの型だけでは入力を守れない
型定義はコンパイル時に消去されるため、実行時のセキュリティ防御にはなりません。外部からのリクエストにはHono ValidatorやZodを組み合わせ、不正な値がハンドラに到達する前に入口で遮断する設計が必要です。
すべてが完全に同じ環境ではない
基本的なRequestやResponseの扱いは共通ですが、ローカルファイルへのアクセス、WebSocket、環境変数の読み込み、データベース接続バインディングなどは配置先ごとに仕様が異なります。プラットフォーム固有機能との境界を意識して設計します。
軽量さはAPI設計を代行しない
フレームワークが軽量だからといって、API設計自体の考慮が不要になるわけではありません。認証・認可のフロー、統一されたエラーレスポンス構造、APIバージョニング、監視、レート制限などは要件に応じて明示的に設計する必要があります。
IN ONE SENTENCE
Hono APIとは?
Web標準のAPIとTypeScriptを活用し、エッジからNode.jsまでポータブルに動作する軽量なWeb APIフレームワーク。
SOURCES / OFFICIAL DOCS
