Files
web_hgcg_h5/docs/api-contract.md
T
2026-10-27 17:39:27 +07:00

47 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 91av 页面接口对照
核对日期:2026-10-21。来源:[当前 Swagger](https://91av-wz.80sygtm.com/swagger/index.html)。上游地址通过 `UPSTREAM_API_URL` 配置,默认 `https://webhgcgapi.mfcg.me`;下表省略 `/api/app/` 前缀。
| 页面 | 接口及关键参数 |
| --- | --- |
| 顶部、侧栏和移动导航 | `navigation/header`;使用 `categoryList` 的顺序、`name,urlValue,icon,categoryType,translationList`。1 为 URL、2 为二级导航,3 不混入主导航;不生成固定菜单 |
| 首页 | `playlet/home`;轮播 `homeBannerData`,栏目 `homeConfigData`,广告 `advitise` |
| 短剧列表 | `playlet/all/list`;`pageNum,pageSize,sortType`,排序 1 最新、2 热播、3 独家、4 随机 |
| 三个排行榜 | `playlet/hot/rank/list`;`rankType` 分别为 1 热播、2 新剧、3 追剧,分页使用 `pageNum,pageSize` |
| 专题列表 | `playlet/topic/list`;`pageNum,pageSize`,没有专题分类和排序参数 |
| 专题详情、题材页 | `playlet/topic/detail`;`id,pageNum,pageSize`。当前服务的题材和专题使用同一 ID;不再向全量列表传会被忽略的 `themeId` |
| 标签页 | `playlet/tag/list`;`tagSlug` 或 `tagId`,以及 `pageNum,pageSize,sortType` |
| 首页“更多” | 优先使用 `moreUrl`,继续视为站内业务入口。未配置时使用 `/config/{slug或id}/`,从 `playlet/home.homeConfigData` 按 slug 或 ID 提取对应已启用栏目;只展示实际返回的条目,不伪造完整目录或后续分页 |
| 搜索结果 | `playlet/search`;`keyword,pageNum,pageSize`。无结果优先展示 `everyoneWatching`,缺少推荐时读取 `playlet/hot/list` |
| 搜索联想 | `playlet/search/suggest`;`keyword`,返回短剧对象,点击进入实际详情页;热搜词继续进入搜索页 |
| 搜索推荐换一批 | `playlet/all/list`;`sortType=4` 随机获取,避免缺少必填的短剧 ID |
| 短剧详情 | `playlet/detail` 传 `slug` 或 `id`;`playlet/chapter/list` 传 `playletSlug` 或 `playletId` |
| 详情推荐 | `playlet/guess-like/list`;必须传当前 `playletId`,不依赖详情中未定义的推荐字段 |
| 章节播放 | `playlet/chapter/detail`;`chapterId` 加 `playletSlug` 或 `playletId`,使用实时观看权限、费用、余额及视频地址。章节 SEO 优先于整剧 SEO |
| 福利应用 | `applist/list?categoryId=…`;保留分类锚点及空分类隐藏逻辑 |
| 回家的路、独立导航 | 站点地址固定 `https://huangguocg.com/`,联系方式固定官方 TG `@jbd125`;`config/info` 只提供导航介绍和 App 链接,没有 App 地址时隐藏下载入口 |
| 关于等六个信息页 | 按既有要求保留 HTML 静态正文;联系我们与 DMCA 只展示官方 TG `@jbd125` |
## 写接口
2026-10-22 本项目(`JHA-1047`)调整内容地址:链接优先使用非空 slug,缺少时使用 ID,保留尾斜杠和独立分页。专题详情接口仍必填 ID,slug 路由先分页查询专题目录解析 ID,再读取详情;目录故障返回服务错误,不伪装成专题不存在。详情评论和推荐等只支持数字 ID 的接口在详情返回后使用真实 ID;支持 slug 的章节请求继续并行。canonical、面包屑、选集和 ItemList 使用对应主地址,旧 ID 地址不新增转向 slug 的重定向。
只使用游客会话 `auth/guest`,凭证保存在 HttpOnly Cookie;登录、注册、找回密码、资料修改、充值/VIP 下单和章节解锁已删除,代理不再放行。整剧点赞/收藏传 `id` 和布尔状态,章节点赞/收藏只传 `chapterId` 和布尔状态。评论发送、点赞、观看报告的字段按各自请求模型发送。
## 已移除的旧接口依赖
`playlet/operate/list`、`playlet/home/config/detail/list`、`video/all/list` 在实际游客身份下返回 HTTP 404,且不在当前文档内。其余旧 `video/*`、`playlet/rank`、`playlet/today-update` 也不再开放代理。
当前文档没有独立视频列表和详情接口。按用户要求移除“剧集”的桌面、侧栏、移动导航入口及 `/series/`、`/video/{id}/` 路由(含分页);旧地址直接返回 404,不转换或重定向。首页和结构化数据不再输出旧类型的独立视频栏目。短剧详情、选集和章节播放继续保留。
## 验证方式
页面请求采用服务端渲染:服务端先准备会话与当前页数据,再直接返回完整正文;列表、搜索、详情/播放、工具、账户和充值均不使用浏览器整页取数及加载占位。原生链接请求下一页,浏览器只绑定首屏数据对应的交互。搜索联想、用户主动操作、实时播放权限和显式余额刷新仍按需调用 API。
公共配置、页脚、导航、分类和标签选项缓存 60 秒,首页缓存 30 秒,按上游和查询参数隔离并合并并发读取。详情、章节、选集、评论及推荐并行准备;账户、余额、套餐和观看权限保持实时。公开配置及页脚以字段白名单随 HTML 传递,SDK 配置继续单独读取。可用 `PUBLIC_DATA_CACHE_TTL_MS=0` 关闭公共缓存用于排查;页面和鉴权响应继续禁止共享缓存。
`tests/fixtures/91av-app-contract.json` 保存本次核对的端点、方法、查询参数及请求字段,不包含配置或凭证。合同测试检查页面请求参数及代理白名单;本地模拟服务另验证 SSR、分页、权限、登录、解锁及支付交互。
`PREVIEW_URL=http://127.0.0.1:3107 npm run smoke:api` 检查真实只读接口、游客握手及页面响应,凭证仅保存在进程内存。浏览器交互与真实扣费不包含在该脚本的验证范围内。