Skip to content

API 文档总览

探字星球 Mock API 文档(32 个 RESTful 端点,6 大模块)。所有端点由 mockjs 拦截 axios 请求实现,模拟网络延迟 50-100ms,数据持久化到 localStorage。


统一约定

响应格式

typescript
interface ApiResponse<T = unknown> {
  code: number  // 0 = 成功,非 0 = 失败
  msg: string   // "ok" 或错误描述
  data: T       // 业务数据
}

错误码

code含义触发场景
0成功正常请求
400参数错误必填缺失、参数无效
404资源不存在路径参数对应的资源未找到
423已锁定商店密码连续错误 5 次后锁定 30 分钟

网络与持久化

  • 网络延迟Mock.setup({ timeout: "50-100" })mock/index.ts
  • 持久化:每 10 秒自动保存 + 页面关闭时 beforeunload 保存
  • 存储位置:localStorage 多键结构(tzxq_user_profile / tzxq_user_settings / tzxq_game_progress 等 9 键),旧版单一键 tzxq_mock_db 自动迁移

API 调用链

页面 → Pinia Store → api-service.ts → axios → Mock 拦截 → mock/modules/* → mock/data/* → localStorage

源码入口:

  • web/src/services/api-service.ts(axios 封装 + 响应拦截器)
  • web/src/mock/index.ts(Mock 入口,注册所有模块)
  • web/src/mock/utils.tssuccess() / fail() / paginate() / parsePagination()

6 大模块 32 端点

模块端点数文档Mock 文件
user9user.mdmock/modules/user/profile.ts(2)+ exp-points.ts(5)+ badges.ts(2)
character4character.mdmock/modules/character/list.ts
game7game.mdmock/modules/game/config.ts(3)+ progress.ts(2)+ powerups.ts(2)
achievement2achievement.mdmock/modules/achievement/level.ts + badges.ts
shop9shop.mdmock/modules/shop/rewards.ts(5)+ redeem.ts(2)+ password.ts(2)
planet1planet.mdmock/modules/planet/list.ts
合计32

⚠️ AP7:路由注册顺序约束

关键约束GET /api/v1/characters/categories 必须在 GET /api/v1/characters/:char 之前注册,否则 categories 会被通用模式 /:char 误匹配为单字名称。

源码位置:web/src/mock/modules/character/list.ts

typescript
// 第 14 行:GET /characters(列表)
Mock.mock(/\/api\/v1\/characters(\?.*)?$/, "get", ...);

// 第 42 行:GET /characters/categories(必须在 /:char 之前)
Mock.mock(/\/api\/v1\/characters\/categories(\?.*)?$/, "get", ...);

// 第 47 行:GET /characters/categories/:id/chars
Mock.mock(/\/api\/v1\/characters\/categories\/([^/?]+)\/chars(\?.*)?$/, "get", ...);

// 第 62 行:GET /characters/:char(必须在 /categories 之后)
Mock.mock(/\/api\/v1\/characters\/([^/?]+)$/, "get", ...);

类似约束也存在于 game/config.tsGET /games/data 必须在 GET /games/:id 之前(通过 if (gameId === "data") 提前拦截)。

探字星球 · 使用指南与开发手册