AgentSkillsCN

api-development

使用Hono + Zod OpenAPI协助创建API端点。(1)添加新API端点,(2)创建路由定义,(3)定义响应模式,(4)创建实体模式时使用。触发器:“创建API”、“添加端点”、“添加路由”、“GET/POST/PUT/DELETE API”、“模式定义”、“响应类型”

SKILL.md
--- frontmatter
name: api-development
description: Hono + Zod OpenAPIを使用したAPIエンドポイント作成を支援。(1)新しいAPIエンドポイント追加、(2)ルート定義作成、(3)レスポンススキーマ定義、(4)エンティティスキーマ作成で使用。トリガー:「APIを作成」「エンドポイント追加」「ルート追加」「GET/POST/PUT/DELETE API」「スキーマ定義」「レスポンス型」

API Development

Hono + Zod OpenAPI + Drizzle ORM構成。

API作成手順

  1. shared/src/schemas/responses/ にレスポンススキーマ作成
  2. backend/src/routes/ にルート定義作成
  3. backend/src/index.ts にルートをマウント

命名規則

エンドポイントレスポンス名
GET /v1/toursToursResponse
GET /v1/tours/:idTourResponse
GET /v1/destinations/:id/toursDestinationToursResponse

詳細: naming-conventions.md

ルート定義

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 にマウント