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