Open
refactor(app): HttpUtil 映射配置化 + 配置校验 + 网络重试 (#4) #6
refactor(app): HttpUtil 映射配置化 + 配置校验 + 网络重试 (#4) #6
Open
雅皮士Add on 9 days ago
雅皮士
雅皮士
9 days ago

变更说明

处理 Issue #4 中端侧网络层的三项改进(映射硬编码 / 无重试 / 无配置校验),仅改 harmony_app/entry/src/main/ets/utils/HttpUtil.ets,对外 API(HttpUtil.get/post)签名与返回结构不变。

变更内容

  1. 映射配置化:两处 6 分支 if/else(getFunctionId / nameFromPath)改为 Map 查找表,新增云函数只需登记一次。
  2. 配置守卫:请求前校验 APPWRITE_HOST / PROJECT_ID 是否为空或仍含 <...> 占位符,未配置时返回明确提示,而非难以定位的空 URL 网络错误。
  3. 网络重试:仅对网络/解析异常做线性退避重试(最多 2 次);业务错误码 {code:-1} 立即返回,不重试。
for (let attempt = 0; attempt <= MAX_RETRY; attempt++) {
  try { return await doRequest(functionId, data); }
  catch (err) { lastError = ...; if (attempt < MAX_RETRY) await delay(300 * (attempt + 1)); }
}

验证

说明:验证环境 SDK 为 HarmonyOS 26.0.0,为适配当前 IDE 临时移除了 build-profile.json5 的 compileSdkVersion(24)字段;该临时改动未包含在本 PR。

未覆盖

Issue #4 中的「MVVM 分层」与「单元测试补充」属较大范围重构,建议单独立项,不在本 PR。

Refs #4

likedislike
Merge blocked
雅皮士雅皮士
9 days ago Associated issue: [Enhancement][P2] 可维护性与性能优化:dailyGoal 硬编码、查询效率、MVVM 分层、测试缺失