Skip to content

feat: 增加前端通用 API 客户端基础设施 #116

Description

@huyanxius

背景

当前前端架构已经定义了各实体的 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 鉴权。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions