Files
skelet/docs/api.md
T

2.1 KiB
Raw Blame History

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。

管理员可维护:

  • SkeletonProjectPage
  • ScenarioPage
  • ArticlePage
  • Language
  • Framework
  • DatabaseOption
  • SkeletonFeature

后续 API 原则

只有出现以下需求时才新增 API:

  • 前台异步筛选必须无刷新更新。
  • 用户提交骨架项目。
  • 外部系统读取项目数据库。
  • GitHub 数据同步任务需要内部端点。

新增 API 前必须先更新本文,至少写清路径、鉴权方式、请求字段、响应字段、错误码、幂等性和频率限制。

错误与降级

  • 筛选无结果:展示空状态,不返回 500。
  • slug 不存在:返回 404 页面。
  • 外部链接为空:不展示链接按钮。
  • Sponsored 项目:必须展示赞助标识。
  • 后台未登录:使用 Wagtail 默认登录流程。