功能指南
API 开发
Hono.js 路由、中间件和 OpenAPI 文档
架构概览
API 层使用 Hono.js(一个轻量级的 Web 框架,运行在 Next.js 之上),挂载在 /api 路径下。
- 入口文件:
apps/01mvp-web/src/server/app.ts - 路由目录:
apps/01mvp-web/src/server/routes/ - 中间件:
apps/01mvp-web/src/server/middleware/
路由组织
路由按功能模块拆分为独立文件,在 app.ts 中统一挂载。已有 40+ 模块,包括 auth.ts(认证)、events.ts(活动)、users.ts(用户)等。
创建新 API 路由
创建路由文件:在 src/server/routes/ 下新建文件,导出 Hono 实例
// apps/01mvp-web/src/server/routes/my-route.ts
import { Hono } from "hono";
const app = new Hono()
.get("/", async (c) => {
return c.json({ message: "Hello" });
})
.post("/", async (c) => {
const body = await c.req.json();
return c.json({ data: body });
});
export default app;挂载路由:在 app.ts 中注册
// apps/01mvp-web/src/server/app.ts
app.route("/my-route", myRoute);访问测试:浏览器或 curl 访问 http://localhost:7001/api/my-route 即可
中间件
中间件(middleware):在请求到达你的业务代码之前,先做一些预处理——比如检查登录状态、限制请求频率等。
项目内置了三个全局中间件,在 app.ts 中按顺序注册:
| 中间件 | 文件位置 | 说明 |
|---|---|---|
| 错误处理 | middleware/error-handler.ts | 统一错误响应格式 |
| CORS | middleware/cors.ts | 处理跨域请求 |
| 限流 | middleware/rate-limit.ts | API 请求频率限制 |
需要登录保护的路由,加上认证中间件即可:
// apps/01mvp-web/src/server/routes/protected.ts
app.use("/*", authMiddleware); // 需要登录
app.use("/*", adminMiddleware); // 需要管理员权限请求参数验证
使用 Zod(一个帮你校验数据类型是否正确的库)进行请求体验证:
// apps/01mvp-web/src/server/routes/events.ts
import { z } from "zod";
import { zValidator } from "@hono/zod-validator";
const schema = z.object({
title: z.string().min(1),
type: z.enum(["MEETUP", "HACKATHON"]),
});
app.post("/", zValidator("json", schema), async (c) => {
const data = c.req.valid("json"); // data 已自动校验类型
});OpenAPI 文档
项目自动生成 API 文档,开发时访问 http://localhost:7001/api/docs 即可在浏览器中查看和调试接口。