Skip to content

Swagger / OpenAPI 文档

Zenith Admin 后端通过 @hono/zod-openapi 在运行时生成 OpenAPI 3.1 文档,并提供 Swagger UI。路由 schema 是唯一维护入口,不需要手写静态 OpenAPI 文件。


访问地址

路径说明
GET /api/docsSwagger UI 交互式界面
GET /api/openapi.jsonOpenAPI 3.1 JSON Spec,可导入 Postman / Apifox
GET /metricsPrometheus 文本指标端点,非 OpenAPI 端点

默认开发环境地址:

  • Swagger UI:http://localhost:3300/api/docs
  • JSON Spec:http://localhost:3300/api/openapi.json
  • Metrics:http://localhost:3300/metrics

/api/docs/api/openapi.json/metrics 无需认证。

非 OpenAPI 运维端点

GET /metrics@hono/prometheusprom-client 暴露,返回 Prometheus 文本格式,不返回 JSON schema,也不进入 /api/openapi.json


鉴权方式

OpenAPI 全局声明 BearerAuth

http
Authorization: Bearer <accessToken>

Swagger UI 调试步骤:

  1. 调用 POST /api/auth/login 获取 accessToken
  2. 点击 Swagger UI 右上角 Authorize
  3. BearerAuth 中填入 Bearer <accessToken> 或直接填入 token 值(Swagger UI 会按 http bearer 方案处理)。
  4. 授权后调试带 security: [{ BearerAuth: [] }] 的接口。

公开接口在路由定义中显式写 security: [],例如登录、验证码、刷新令牌、公开升级接口、开放回调类端点。


导入 Postman / Apifox

  1. 打开 Postman 或 Apifox。
  2. 选择 Import → URL
  3. 填入 http://localhost:3300/api/openapi.json
  4. 导入后按 tags 查看接口分组。

Spec 维护

OpenAPI Spec 由每个路由文件的 createRoute(...) 声明汇总生成。维护规则:

  1. 路由文件创建 new OpenAPIHono({ defaultHook: validationHook })
  2. 每个端点用 defineOpenAPIRoute({ route: createRoute(...), handler }) 声明。
  3. request.params / request.query / request.body 使用 Zod schema;handler 只从 c.req.valid() 取已校验值。
  4. responses 使用 ...commonErrorResponsesok() / okPaginated() / okMsg() / 文件响应 helper。
  5. 实体响应 DTO 放在 packages/server/src/lib/dtos/,通过 packages/server/src/lib/openapi-dtos.ts 导入。
  6. 子路由通过 router.openapiRoutes([... ] as const) 注册;业务域在 routes/{domain}/index.tsdefineRouteDomain 挂载。
  7. 新增业务域时加入 routes/index.tsROUTE_DOMAINS
  8. 路由表快照由 packages/server/src/app.contract.test.ts 维护,OpenAPI 文档可用性由 packages/server/src/lib/openapi-doc.test.ts 覆盖。

递归 Zod schema 使用项目封装的稳定引用写法,避免 /api/openapi.json 展开递归结构时栈溢出。普通 Hono 子路由不会自动合并 OpenAPI registry;需要出现在文档中的端点应使用 OpenAPIHono


接口分组

业务域装配顺序由 packages/server/src/routes/index.tsROUTE_DOMAINS 控制:

text
ops → identity → member → platform → files → tasks → analytics → report → messaging → payment → open-platform → workflow → chat → mp → biz-demo → ai → cms → wiki

OpenAPI tags 由各路由文件声明。代码中同时存在英文标签(如 AuthUsersAsyncTasksExportJobsWorkflowDefinitions)和少量中文领域标签。完整列表以 Swagger UI 为准,核心分组包括:

标签/领域说明
Auth / MemberAuth管理员与会员认证、刷新令牌、会话、个人资料
Users / Roles / Menus / Departments / Positions / UserGroups身份、组织、角色、菜单权限与用户组
Tenants / TenantPackages / Licensing租户、套餐与授权
SystemConfigs / CronJobs / SystemScheduler / Retention / Cache系统配置、业务定时任务、系统调度、数据保留与缓存
AsyncTasks / TaskDemo通用异步任务、任务类型策略、任务明细与演示任务
ExportJobs导出实体、导出任务、下载与下载日志
Files / Business Files文件上传、托管文件、业务附件
DbAdmin / DbBackups数据库管理、查询、备份
OperationLogs / LoginLogs / IpAccessLogs审计、登录与 IP 访问日志
Notifications / Announcements / Channels / Email* / Sms* / InApp*通知公告、频道、邮件、短信与站内信
Workflow*流程定义、实例、任务、自动化、事件订阅、引擎运维
Payment*支付应用、订单、退款、对账、分账、结算、风控与回调
Member*会员、等级、标签、积分、钱包、优惠券、签到、充值
Report*数据源、数据集、仪表盘、订阅、投递、打印、数据质量
CMS-* / MemberCms / 公开API-CMSCMS 站点、栏目、内容、素材、发布、采集、前台与开放 API
Mp*微信公众号账号、粉丝、菜单、素材、群发、模板消息、客服
Open* / ApiScopes / DeveloperApps / AppWebhooks开放平台、OAuth2、API Scope、签名与调用统计
AIAI 配置、对话、智能体、知识库、评测、Mastra Studio 代理 API
Chat*聊天会话、消息、机器人、Webhook、定时消息
Rules*决策表、决策流、名单库与执行记录
Ops 相关标签进程、端口、Docker、网络诊断、systemd、Nginx、SSL、终端与日志
Wiki*知识空间、文档、模板、标签、评论与治理
服务状态GET /api/health 健康检查

Built with VitePress for local documentation preview.