SuperAPI AI 工具集

write-api-route

编程与开发

查看项目

更新于 10-16 09:54

技能介绍

用途:在 ryOS 项目中按统一约定新增或修改 api/ 下的后端 API 路由。路由由独立 Bun 服务器(scripts/api-standalone-server.ts)提供服务,完整契约见 docs/8.10-api-design-guide.md,本技能是实践清单。

文件约定:api/<feature>/index.ts 为集合路由,[id].ts 为单条路由,[id]/messages.ts 为嵌套动态路由;_utils/ 存放全局工具,功能的 _helpers/ 存放域内私有模块,下划线前缀文件不是路由。共享模块导入需带 .js 扩展名。

主要能力与用法:

  1. 新端点优先用 apiHandler 包装,集中处理 CORS/预检、来源白名单、方法校验、Redis 注入、鉴权解析、请求体解析与校验、分析与 500 兜底。
  2. 鉴权通过 auth 选项设置 "none"/"optional"/"required"/"admin";required 需同时提供 Authorization: Bearer <token> 与 X-Username;admin 还需用户名为 ryo。非 apiHandler 路由应直接调用 resolveRequestAuth()。
  3. 输入校验用 Zod 的 bodySchema,或 _utils/_validation.ts 辅助函数。
  4. 公开或昂贵路由用 _utils/_rate-limit.ts 限流,getClientIp 会遵循 TRUSTED_PROXY_COUNT,优先使用 constants.ts 中的 RATE_LIMIT_TIERS。
  5. 响应显式返回 JSON,客户端错误返回 { error: "..." };流式可用 _utils/_sse.ts。
  6. Redis 键统一使用 REDIS_PREFIXES 与共享 TTL;不可信 URL 用 _utils/_ssrf.ts;对象存储用 _utils/storage.ts。

测试:需先运行 bun run dev:api,再运行 bun run test:api 或 bun test tests/integration/api/test-<feature>.test.ts;新套件放在 tests/integration/api/ 并加入 scripts/test-groups.ts 的 API_TEST_FILES,然后运行 bun run test:registration。

限制:请求/响应契约变更时须同步更新 docs/8.*.md;本资料未提供其他平台、收费或效果信息。