Hono OpenAPI
hono-openapi は、Zod、Valibot、ArkType、TypeBox などの検証ライブラリや、Standard Schema に対応するすべてのライブラリと連携し、Hono API の OpenAPI ドキュメントを自動生成するミドルウェアです。
🛠️ インストール
このパッケージと、使用する検証ライブラリおよびその依存関係をインストールします。
bash
npm install hono-openapi @hono/standard-validatorこのガイドでは valibot を使います。
bash
npm install valibot @valibot/to-json-schemaインストールの詳細はこちらを参照してください:https://honohub.dev/docs/openapi#installation
🚀 はじめに
1. スキーマを定義する
使用する検証ライブラリでリクエストとレスポンスのスキーマを定義します。Valibot を使った例を示します。
ts
import * as v from 'valibot'
const querySchema = v.object({
name: v.optional(v.string()),
})
const responseSchema = v.string()2. ルートを作成する
describeRoute を使ってルートのドキュメントと検証を設定します。
ts
import { Hono } from 'hono'
import { describeRoute, resolver, validator } from 'hono-openapi'
const app = new Hono()
app.get(
'/',
describeRoute({
description: 'Say hello to the user',
responses: {
200: {
description: 'Successful response',
content: {
'text/plain': { schema: resolver(responseSchema) },
},
},
},
}),
validator('query', querySchema),
(c) => {
const query = c.req.valid('query')
return c.text(`Hello ${query?.name ?? 'Hono'}!`)
}
)注意:
hono-openapiのvalidator()を使うと、query、json、param、formに追加した検証が OpenAPI のリクエストスキーマに自動的に含まれます。describeRoute()内でリクエストパラメーターを手動で定義する必要はありません。
3. OpenAPI 仕様を生成する
OpenAPI ドキュメント用のエンドポイントを追加します。
ts
import { openAPIRouteHandler } from 'hono-openapi'
app.get(
'/openapi',
openAPIRouteHandler(app, {
documentation: {
info: {
title: 'Hono API',
version: '1.0.0',
description: 'Greeting API',
},
servers: [
{ url: 'http://localhost:3000', description: 'Local Server' },
],
},
})
)さらに詳しく知りたい場合は、ドキュメントを参照してください:https://honohub.dev/docs/openapi