Skip to content

Zod OpenAPI

Zod OpenAPI Hono 是一个扩展的 Hono 类,支持 OpenAPI。使用 Pylon,你可以验证 Zod 中的值和类型,并生成 OpenAPI Swagger 文档。本网站仅展示基本用法。

¥Zod OpenAPI Hono is an extended Hono class that supports OpenAPI. With it, you can validate values and types using Zod and generate OpenAPI Swagger documentation. On this website, only basic usage is shown.

首先,使用 Zod 定义你的模式。z 对象应从 @hono/zod-openapi 导入:

¥First, define your schemas with Zod. The z object should be imported from @hono/zod-openapi:

ts
import { z } from '@hono/zod-openapi'

const ParamsSchema = z.object({
  id: z
    .string()
    .min(3)
    .openapi({
      param: {
        name: 'id',
        in: 'path',
      },
      example: '1212121',
    }),
})

const UserSchema = z
  .object({
    id: z.string().openapi({
      example: '123',
    }),
    name: z.string().openapi({
      example: 'John Doe',
    }),
    age: z.number().openapi({
      example: 42,
    }),
  })
  .openapi('User')

接下来,创建路由:

¥Next, create a route:

ts
import { createRoute } from '@hono/zod-openapi'

const route = createRoute({
  method: 'get',
  path: '/users/{id}',
  request: {
    params: ParamsSchema,
  },
  responses: {
    200: {
      content: {
        'application/json': {
          schema: UserSchema,
        },
      },
      description: 'Retrieve the user',
    },
  },
})

最后,设置应用:

¥Finally, set up the app:

ts
import { OpenAPIHono } from '@hono/zod-openapi'

const app = new OpenAPIHono()

app.openapi(route, (c) => {
  const { id } = c.req.valid('param')
  return c.json({
    id,
    age: 20,
    name: 'Ultra-man',
  })
})

// The OpenAPI documentation will be available at /doc
app.doc('/doc', {
  openapi: '3.0.0',
  info: {
    version: '1.0.0',
    title: 'My API',
  },
})

你可以像启动 Hono 一样启动你的应用。对于 Cloudflare Workers 和 Bun,请使用此入口点:

¥You can start your app just like you would with Hono. For Cloudflare Workers and Bun, use this entry point:

ts
export default app

另请参阅

¥See also

Hono v4.11 中文网 - 粤ICP备13048890号