本文へ移動
rdlabo.devdocs

Hono APIをローカルで試す

Hono APIへ共通のHTTP動作を追加します。health応答のweak ETagと、存在しないルートのJSON応答を、ポート起動やCloudflareアカウントなしで確認できます。

1. 小さなプロジェクトを作る

この演習はNode.js 24とnpmを使います。コマンドは対象のkitリリースを固定しています。npmは必須peerも導入します。peerを自動導入しない設定ではインストール要件を確認してください。

mkdir hono-kit-demo
cd hono-kit-demo
npm init -y
npm pkg set type=module
npm install @rdlabo/workers-hono-kit@0.12.2 hono@4
npm install --save-dev tsx@4

2. 2つのリクエストを送る

demo.ts として保存します。app.request() は同じプロセス内でHonoアプリを呼び出します。

import { Hono } from 'hono';
import { createAppErrorHandler, finalizeResponse, notFoundHandler } from '@rdlabo/workers-hono-kit';

const app = new Hono();
app.use('*', finalizeResponse());
app.onError(createAppErrorHandler());
app.notFound(notFoundHandler);
app.get('/health', (c) => c.json({ ok: true }));

const healthy = await app.request('/health');
console.log(healthy.status, await healthy.text());
console.log('weak etag:', healthy.headers.get('etag')?.startsWith('W/'));

const missing = await app.request('/missing');
console.log(missing.status, await missing.text());
npx tsx demo.ts

期待する出力です。JSONのプロパティ順序は問いません。

200 {"ok":true}
weak etag: true
404 {"message":"Cannot GET /missing","error":"Not Found","statusCode":404}

kitが追加するHTTP動作を確認できました。この演習ではWorkers bindingの作成、ユーザー認証、デプロイ済みサービスの検証は行っていません。

3. 実アプリへ組み込む

middlewareとルート登録を残し、動作確認用のリクエストを取り除いて app をWorker handlerとしてexportします。次はHTTP・認証へ進みます。DBが必要になったらMySQLアダプターを追加してください。

既存kitから更新する場合は0.12のimport移行を確認します。旧 /db/business-time は互換exportで、新しい連携には独立パッケージを使います。

次のステップ

必要なもの 最初に使うもの
HonoのHTTP・認証・Queueの共通処理 @rdlabo/workers-hono-kit
Honoの有無に依存しないMySQLアクセス Workers MySQL
日時変換と新しいコードの検査 Workers Timezone+ESLint
開発時のコード規約チェック ESLint Plugin Rules

kitは再利用する基盤処理を提供します。ルート、業務ルール、認証情報、DBスキーマはアプリが所有します。まず必要なhelperを1つ導入でき、すべてのエントリポイントを採用する必要はありません。