【三方库】ohos_axios v2.2.12 鸿蒙平台稳定性与质量提升
📢 【三方库】ohos_axios v2.2.12 鸿蒙平台稳定性与质量提升
ohos_axios v2.2.12 已发布。本次升级聚焦该库质量提升,新增 enableAutoCookie 自动 Cookie 共享能力与 enableHttpRequestReuse HttpRequest 实例复用能力,兼容升级,开发者无需修改现有代码即可享受本次改进。推荐所有该库用户升级至本版本。
版本概览
| 类型 | 内容 |
|---|---|
| 质量提升 | 支持 enableAutoCookie 配置同一 HttpRequest 实例多次请求间自动携带与共享 Cookie(API 26+) |
| 质量提升 | 支持 enableHttpRequestReuse 配置项控制是否开启 HttpRequest 实例复用,并新增 destroy() 方法统一管理实例生命周期 |
质量提升
支持 enableAutoCookie 实现 Cookie 自动携带与共享(API 26+)
背景:此前同一 HttpRequest 实例的多次请求之间无法自动复用服务端通过 Set-Cookie 下发的 Cookie,开发者需自行维护 Cookie 状态。本次新增 enableAutoCookie 配置项,开启后由底层 HttpRequest.enableAutoCookie() 自动管理 Cookie 的携带与共享。
实现(library/src/main/ets/components/lib/adapters/ohos/index.js,约 40 行新增):
- 在
setHttpConfig中新增分支:当config.enableAutoCookie为真时,调用新增的setEnableAutoCookie(httpRequest, config, reject)完成设置,调用点位于创建/复用httpRequest之后、构建fullPath之前。 - 新增
setEnableAutoCookie函数,包含三层校验与调用逻辑:- API 版本校验:读取
deviceInfo.sdkApiVersion,当低于 26 时通过reject(new AxiosError(...))抛出enableAutoCookie need Api >= 26,current api is ${apiVersion},错误码为AxiosError.ERR_BAD_OPTION。 - 类型校验:当
config.enableAutoCookie不是boolean时,抛出enableAutoCookie must be a boolean value,错误码为AxiosError.ERR_BAD_OPTION_VALUE。 - 调用底层接口:通过
httpRequest.enableAutoCookie(config.enableAutoCookie)设置自动 Cookie;调用异常时捕获并通过reject抛出AxiosError,正常时打印axios: enableAutoCookie set to %s日志。
- API 版本校验:读取
- 类型声明同步更新(
library/index.d.ts):在AxiosRequestConfig接口新增enableAutoCookie?: boolean;字段。
约束:根据 README 说明,enableAutoCookie 仅在 API Level 26+ 且 enableHttpRequestReuse 同时开启时生效;由 true 切换为 false 时会清除当前实例已保存的 Cookie 共享状态。
支持 enableHttpRequestReuse 控制 HttpRequest 实例复用
背景:此前每次请求均通过 _http.createHttp() 新建 HttpRequest 实例并在请求结束后 destroy(),无法在同一 axios 实例的多次请求间复用底层 HttpRequest,限制了连接复用与 Cookie 共享等能力的使用。本次新增 enableHttpRequestReuse 配置项,开启后由 Axios 实例统一持有并复用 HttpRequest。
实现:
-
Axios类新增实例复用管理(library/src/main/ets/components/lib/core/Axios.js,29 行新增):- 构造函数初始化
this._httpRequest = null;,用于缓存复用的HttpRequest实例。 - 新增
getHttpRequest()方法:懒加载创建,当this._httpRequest为空时调用_http.createHttp()创建并缓存,后续直接返回缓存实例。 - 新增
destroy()方法:当this._httpRequest非空时调用this._httpRequest.destroy()释放资源并置空。 - 在
request()方法中,合并配置后新增判断:当this.defaults.enableHttpRequestReuse为真时,执行config.__httpRequestInstance = this.getHttpRequest(),将复用实例通过内部字段传递给适配器。 - 新增
import _http from '@ohos.net.http';以支持上述创建逻辑。
- 构造函数初始化
-
适配器复用实例(
library/src/main/ets/components/lib/adapters/ohos/index.js,setHttpConfig内 10 行新增):- 将原先无条件
let httpRequest = _http.createHttp();改为条件分支:当config.enableHttpRequestReuse && config.__httpRequestInstance均为真时,复用config.__httpRequestInstance;否则按原逻辑新建。
- 将原先无条件
-
请求结束时不销毁复用实例(
library/src/main/ets/components/lib/adapters/ohos/http.js,5 行改动):- 在 abort/清理回调中,将无条件的
httpRequest.destroy();改为if (!config.enableHttpRequestReuse) { httpRequest.destroy(); },复用模式下由Axios实例统一管理生命周期。
- 在 abort/清理回调中,将无条件的
-
暴露
destroy()到 axios 实例(library/src/main/ets/components/lib/axios.js,6 行新增):- 在
createInstance中新增instance.destroy = function() { context.destroy(); };,使开发者可通过axios.destroy()主动释放复用的HttpRequest资源。
- 在
-
类型声明同步(
library/index.d.ts,3 行新增):AxiosRequestConfig接口新增enableHttpRequestReuse?: boolean;。Axios类新增destroy(): void;方法声明。
使用约束:开启 enableHttpRequestReuse 后,开发者需在不再使用时主动调用 instance.destroy() 释放 HttpRequest 资源,否则存在资源泄漏风险。
兼容性说明
- 无 Breaking Changes,API 接口保持不变。
- 本次变更以增量能力为主,现有代码无需修改。
- 从 v2.2.11 起升级至 v2.2.12 均为兼容性升级。
升级方式
- 鸿蒙原生:
oh-package.json5→"@ohos/axios": "^2.2.12",执行ohpm install。
相关链接
- 文档:https://gitcode.com/CPF-ApplicationTPC/ohos_axios/blob/master/README.md
- CHANGELOG:https://gitcode.com/CPF-ApplicationTPC/ohos_axios/blob/master/CHANGELOG.md
- 反馈:https://gitcode.com/CPF-ApplicationTPC/ohos_axios/issues
更多推荐




所有评论(0)