bindbox-mini/.trae/documents/基于 Swagger 的 App 用户 API 汇总与 Uni-App 微信登录页面实现方案.md
2025-11-24 22:37:11 +08:00

4.8 KiB
Raw Blame History

API 文档汇总App 用户相关)

  • 登录与绑定:

    • POST /api/app/users/weixin/loginminiapp/src/api/apis/apiDefinitions.js:106

      • 请求: App_weixin_login_requestcode、invite_code可选

      • 响应: App_weixin_login_responsetoken、user_id、avatar、nickname、invite_codeminiapp/src/api/apis/globals.d.ts:760

    • POST /api/app/users/{user_id}/phone/bindapiDefinitions.js:123

      • 请求: App_bind_phone_requestcode来源于微信手机号授权globals.d.ts:376

      • 响应: 成功布尔或标准成功结构(项目统一在 responded 钩子返回 response.dataresponse.data.dataminiapp/src/api/apis/index.js:59

  • 用户资料与地址:

    • PUT /api/app/users/{user_id} 修改头像/昵称apiDefinitions.js:107

      • 请求: App_modify_user_requestavatar、nickname可选globals.d.ts:363
    • GET /api/app/users/{user_id}/addresses 列表apiDefinitions.js:108/ POST 新增apiDefinitions.js:109/ DELETE 删除apiDefinitions.js:110/ PUT .../default 设默认apiDefinitions.js:114

      • 新增请求: App_add_address_request姓名、手机号、省市区、详细地址、是否默认globals.d.ts:367

      • 响应: 列表返回数组,新增/删除/设默认返回标准成功结构(项目统一 responded 处理)

  • 积分与统计:

    • GET /api/app/users/{user_id}/pointsapiDefinitions.js:124/ GET .../points/balanceapiDefinitions.js:125

      • 响应: App_points_balance_responsebalanceglobals.d.ts:773
    • GET /api/app/users/{user_id}/statsapiDefinitions.js:126

      • 响应: App_user_stats_responsecoupon_count、item_card_count、points_balanceglobals.d.ts:776
  • 订单与卡券/道具:

    • GET /api/app/users/{user_id}/ordersapiDefinitions.js:122→ 订单列表(类型包含 Model_order_items 等)

    • GET /api/app/users/{user_id}/couponsapiDefinitions.js:118/ GET .../invitesapiDefinitions.js:119

    • GET /api/app/users/{user_id}/item_cardsapiDefinitions.js:120/ GET .../item_cards/usesapiDefinitions.js:121

      • 响应: User_item_card_with_template[]globals.d.ts:978

现有代码要点(可复用)

  • API 客户端:alova + 生成器miniapp/src/api/apis/index.js:35、112miniapp/alova.config.js:6已封装 Authorization、401 刷新登录index.js:9-33

  • 登录页Taro版miniapp/src/pages/login/index.vue,逻辑封装在 Apis.login.WechatAppLoginindex.js:122-421

登录页面实现Uni-App Vue3

  • 页面结构Logo/说明文案、按钮「微信登录」open-type="getPhoneNumber"的手机号授权按钮,加载与错误提示。

  • 流程:

    • uni.login({ provider: 'weixin' }) 获取 code → 调用 POST /api/app/users/weixin/login → 存储 tokenuser_iduni.setStorageSync

    • 可选:用户点击手机号授权后触发 onGetPhoneNumber,拿到 code 调用 POST /api/app/users/{user_id}/phone/bind 绑定手机号。

    • 登录完成后拉取 GET /api/app/users/{user_id}/stats.../points/balance 更新首页状态。

  • 网络层:

    • 方案A推荐复用现有在 Uni-App 中引入与复用 alova 生成的 Apis(保持统一的拦截器与基址、响应处理)。

    • 方案B轻量使用 uni.request 封装最小调用(登录/绑定/统计),按现有 Authorization: Bearer <token> 规则注入。

  • 配置与安全:

    • baseURL 指向后端地址(如 http://127.0.0.1:9991),并在微信小程序后台配置合法域名/证书;避免在日志中输出明文 token/手机号等敏感信息。
  • 路由与状态:

    • pages.json 新增 pages/login/index,登录成功后 uni.reLaunch 到首页;使用 pinia 存储 isLoginuserInfopoints 等(参考 miniapp/src/store/index.js
  • 错误处理:

    • 按当前项目的分类提示连接被拒绝、超时、域名未配置、SSL 错误、404、500、参数错误进行用户级文案与重试入口参考 index.js:221-253

验证与交付

  • 验证:真机或开发者工具下,观察 code 获取、接口返回、token/user_id 存储与后续接口成功;埋点或日志控制台输出关键步骤。

  • 交付:

    • 新增 pages/login/index.vueUni-App Vue3 Composition API 实现)。

    • 复用或新增 API 封装A/B 二选一)。

    • 配置/路由调整与最小 pinia 状态接入。

后续执行步骤

  • 接入 Swagger 源:将生成器输入指向 http://127.0.0.1:9991/swagger/v1/swagger.json(或项目后端的 Swagger JSON生成/更新 Apis 并对齐 baseURL

  • 按上述方案完成页面与调用接入,并保持与现有 alova 响应处理一致性。