背景
当前前端架构已经定义了各实体的 XxxApis 边界,但 upstream/main 尚未提供统一的 HTTP 请求实现。如果直接接入业务接口,各实体会重复处理服务地址、鉴权头、响应解包、分页转换和错误判断。
后端 PR #75 已声明公共响应结构与 Bearer Token 鉴权契约,前端需要先补齐与之对齐的通用基础层。
目标
在 frontend/src/shared/api 提供不含业务语义的 API 客户端,供后续 Project、Character、Generation、Media 等实体 API 实现复用。
范围
- 从
VITE_API_BASE_URL 读取后端服务地址。
- 支持 JSON 请求体和查询参数。
- 将调用方提供的 access token 注入 Bearer 鉴权头。
- 解包后端
Response<T> 公共响应。
- 解包
ListResponse<T>,并将 page_size 转换为 pageSize。
- 即使 HTTP 状态为 200,也将非 200 业务码视为失败。
- 统一业务错误、HTTP 错误、无效响应和网络错误。
- 增加契约级自动化测试并更新相关架构说明。
不在本次范围
- Project 或 Character 业务接口实现。
- 页面、路由、UI、Mock 数据或 livedemo 资源。
- 登录、Token 存储、Token 刷新或鉴权界面。
- 实体 DTO 与业务字段的 snake_case 到 camelCase 映射。
- 任何 Projects 专属行为。
验收标准
shared/api 不依赖 entities、features、pages 或其他 shared 同层模块。
- 页面中不硬编码 API 地址或 Token。
- HTTP 200 下的后端业务失败能够被正确拒绝。
- 列表响应能够保留 items、total、page 和 pageSize。
- 前端格式化、Lint、类型检查、测试和构建全部通过。
- 不包含 Projects 业务实现。
后端契约
- 公共
Response<T> 与 ListResponse<T>。
- 后端 PR #75 声明的 Bearer access token 鉴权。
背景
当前前端架构已经定义了各实体的
XxxApis边界,但upstream/main尚未提供统一的 HTTP 请求实现。如果直接接入业务接口,各实体会重复处理服务地址、鉴权头、响应解包、分页转换和错误判断。后端 PR #75 已声明公共响应结构与 Bearer Token 鉴权契约,前端需要先补齐与之对齐的通用基础层。
目标
在
frontend/src/shared/api提供不含业务语义的 API 客户端,供后续 Project、Character、Generation、Media 等实体 API 实现复用。范围
VITE_API_BASE_URL读取后端服务地址。Response<T>公共响应。ListResponse<T>,并将page_size转换为pageSize。不在本次范围
验收标准
shared/api不依赖 entities、features、pages 或其他 shared 同层模块。后端契约
Response<T>与ListResponse<T>。