Zod OpenAPI
Zod OpenAPI Hono는 OpenAPI를 지원하는 확장된 Hono 클래스다. 이를 통해 Zod를 사용해 값과 타입을 검증하고 OpenAPI Swagger 문서를 생성할 수 있다. 이 웹사이트에서는 기본적인 사용법만 소개한다.
먼저 Zod로 스키마를 정의한다. z 객체는 @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')다음으로 라우트를 생성한다:
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: '사용자 정보 조회',
},
},
})마지막으로 앱을 설정한다:
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',
})
})
// OpenAPI 문서는 /doc에서 확인할 수 있다
app.doc('/doc', {
openapi: '3.0.0',
info: {
version: '1.0.0',
title: 'My API',
},
})Hono와 동일한 방식으로 앱을 시작할 수 있다. Cloudflare Workers와 Bun을 사용한다면 다음 진입점을 사용한다:
ts
export default app