2.1 KiB
2.1 KiB
API / 模块合约
MVP 是服务端渲染内容站,不提供公开业务 API。本文记录 Wagtail/Django 边界和后续 API 扩展原则。
通用约定
- 前台页面:Django / Wagtail 服务端渲染 HTML。
- 后台管理:Wagtail Admin Session。
- MVP 公开 API:无。
- 时间格式:后台和数据库使用 Django 默认时区配置;前台展示按站点配置格式化。
- 未登录访问后台:由 Wagtail Admin 重定向到登录页。
MVP 页面输入合约
MVP 的“接口”主要是 URL 参数。
GET /projects/
查询参数:
| 参数 | 说明 |
|---|---|
scenario |
场景 slug,可选。 |
language |
语言 slug,可选。 |
framework |
框架 slug,可选。 |
database |
数据库 slug,可选。 |
min_ai_score |
AI 友好度最低分,可选。 |
q |
基础搜索关键词,可选。 |
响应:HTML 页面,展示匹配项目列表、当前筛选条件和空状态。
GET /projects/{slug}/
响应:HTML 页面,展示骨架项目详情。
必须包含:
- 项目名称和简介。
- GitHub / 官网链接。
- 技术栈。
- 适合场景和不适合场景。
- AI 友好度评分和评分理由。
- 维护状态。
- 推荐理由。
- Sponsored 标识,如适用。
后台内容边界
后台使用 Wagtail Admin,不单独开发自定义管理 API。
管理员可维护:
SkeletonProjectPageScenarioPageArticlePageLanguageFrameworkDatabaseOptionSkeletonFeature
后续 API 原则
只有出现以下需求时才新增 API:
- 前台异步筛选必须无刷新更新。
- 用户提交骨架项目。
- 外部系统读取项目数据库。
- GitHub 数据同步任务需要内部端点。
新增 API 前必须先更新本文,至少写清路径、鉴权方式、请求字段、响应字段、错误码、幂等性和频率限制。
错误与降级
- 筛选无结果:展示空状态,不返回 500。
- slug 不存在:返回 404 页面。
- 外部链接为空:不展示链接按钮。
- Sponsored 项目:必须展示赞助标识。
- 后台未登录:使用 Wagtail 默认登录流程。