跳转到正文

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

基于 MIT 许可证发布。