API Development
Hono + Zod OpenAPI + Drizzle ORM構成。
API作成手順
- •
shared/src/schemas/responses/にレスポンススキーマ作成 - •
backend/src/routes/にルート定義作成 - •
backend/src/index.tsにルートをマウント
命名規則
| エンドポイント | レスポンス名 |
|---|---|
GET /v1/tours | ToursResponse |
GET /v1/tours/:id | TourResponse |
GET /v1/destinations/:id/tours | DestinationToursResponse |
ルート定義
typescript
import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi'
import { MyResponse } from '@trippers/shared/schemas/responses'
import { db } from '@db/index'
const router = new OpenAPIHono()
const getRoute = createRoute({
method: 'get',
path: '/',
tags: ['TagName'],
summary: '概要',
responses: {
200: { description: '成功', content: { 'application/json': { schema: MyResponse } } },
500: { description: 'エラー', content: { 'application/json': { schema: z.object({ error: z.string() }) } } },
},
})
router.openapi(getRoute, async (c) => {
const data = await db.select().from(myTable)
return c.json(data, 200)
})
export { router as myRoute }
パスパラメータ・スキーマ定義の詳細: templates.md
マウント
typescript
// backend/src/index.ts
app.route('/v1/my-resource', myRoute)
チェックリスト
- •
shared/src/schemas/responses/にレスポンススキーマ - •
shared/src/schemas/responses/index.tsにexport追加 - •
backend/src/routes/にルート定義 - •
backend/src/index.tsにマウント