简介
Axios ,是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中。本库基于 Axios 原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。
- http 请求
- Promise API
- request 和 response 拦截器
- 转换 request 和 response 的 data 数据
- 自动转换 JSON data 数据
下载安装
OpenHarmony ohpm 环境配置等更多内容,请参考 如何安装 OpenHarmony ohpm 包
需要权限
接口和属性列表
接口列表
接口 | 参数 | 功能 |
axios(config) | config:请求配置 | 发送请求 |
axios.create(config) | config:请求配置 | 创建实例 |
axios.request(config) | config:请求配置 | 发送请求 |
axios.get(url[, config]) | url:请求地址 config:请求配置 | 发送get请求 |
axios.delete(url[, config]) | url:请求地址 config:请求配置 | 发送delete请求 |
axios.post(url[, data[, config]]) | url:请求地址 data:发送请求体数据 config:请求配置 | 发送post请求 |
axios.put(url[, data[, config]]) | url:请求地址 data:发送请求体数据 config:请求配置 | 发送put请求 |
属性列表
属性 | 描述 |
axios.defaults[‘xxx’] | 默认设置 。值为请求配置 config 中的配置项 例如 axios.defaults.headers 获取头部信息 |
axios.interceptors | 拦截器。参考 拦截器 的使用 |
使用示例
使用前在demo中entry–>src–>main–>ets–>common–>Common.ets文件中改为正确的服务器地址,在entry–>src–>main–>resources–>rawfile目录下添加正确的证书,才可正常的使用demo。
发起一个 GET 请求
axios支持泛型参数,由于ArkTS不再支持any类型,需指定参数的具体类型。
如:axios.get<T = any, R = AxiosResponse, D = any>(url)
- T: 是响应数据类型。当发送一个 POST 请求时,客户端可能会收到一个 JSON 对象。T 就是这个 JSON 对象的类型。默认情况下,T 是 any,这意味着可以接收任何类型的数据。
- R: 是响应体的类型。当服务器返回一个响应时,响应体通常是一个 JSON 对象。R 就是这个 JSON 对象的类型。默认情况下,R 是 AxiosResponse,这意味着响应体是一个 AxiosResponse 对象,它的 data 属性是 T 类型的
- D: 是请求参数的类型。当发送一个 GET 请求时,可能会在 URL 中添加一些查询参数。D 就是这些查询参数的类型。参数为空情况下,D 是 null类型。
发送一个 POST 请求
发起多个并发请求
使用说明
axios API
通过向 axios 传递相关配置来创建请求
axios(config)
axios(url[, config])
请求方法的 别名方式 来创建请求
为方便起见,为所有支持的请求方法提供了别名。
- axios.request(config)
- axios.get(url[, config])
- axios.delete(url[, config])
- axios.post(url[, data[, config]])
- axios.put(url[, data[, config]])
注意:
在使用别名方法时, url、method、data 这些属性都不必在配置中指定。
axios 实例
创建一个实例
您可以使用自定义配置新建一个实例。
axios.create([config])
实例方法
- axios#request(config)
- axios#get(url[, config])
- axios#delete(url[, config])
- axios#post(url[, data[, config]])
- axios#put(url[, data[, config]])
请求配置
这些是创建请求时可以用的配置选项。只有 url 是必需的。如果没有指定 method,请求将默认使用 get 方法。
响应结构
一个请求的响应包含以下信息。
PerformanceTiming 属性含义
当使用 then 时,您将接收如下响应:
默认配置
您可以指定默认配置,它将作用于每个请求。
全局 axios 默认值
自定义实例默认值
配置的优先级
配置将会按优先级进行合并。它的顺序是:在lib/defaults.js中找到的库默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后面的优先级要高于前面的。下面有一个例子。
拦截器
在请求或响应被 then 或 catch 处理前拦截它们。
移除拦截器
可以给自定义的 axios 实例添加拦截器
指定返回数据的类型
responseType
指定返回数据的类型,默认无此字段。如果设置了此参数,系统将优先返回指定的类型。
选项包括: string:字符串类型; object:对象类型; array_buffer:二进制数组类型。
设置responseType后,response.data中的数据将为指定类型
注意:也可以通过重写transformResponse方法,修改返回数据;
自定义ca证书
自定义客户端证书
设置代理
证书锁定
证书锁定的用法如下:
需要在配置文件中对证书进行相关信息的配置:配置文件路径为:entry/src/main/resources/base/profile/network_config.json
配置文件:network_config
digest字段消息摘要获取
使用openssl从服务器获取证书,并提取出消息摘要
上传下载文件
上传文件示例
- 上传文件需要单独导入FormData模块
- 当前版本只支持 Stage 模型
- 上传类型支持uri和ArrayBuffer,uri支持“internal”协议类型,仅支持"internal"协议类型,"internal://cache/"为必填字段,示例: internal://cache/path/to/file.txt
- 请求的表单数据值为string类型
当上传的内容为ArrayBuffer时,用法如下
当上传的uri时,用法如下
下载文件示例
设置下载路径filePath(默认在’internal://cache/'路径下)。
关于filePath
filePath:‘workspace/test.txt’:默认路径下创建workspace路径,并将文件存储在workspace路径下。
filePath:‘test.txt’:将文件存储在默认路径下。
filePath:‘workspace/’:默认路径下创建workspace路径,并将文件存储在workspace路径下。
- 当前版本只支持 Stage 模型
下载文件时,如果filePath已存在该文件则下载失败,下载之前需要先删除文件。
错误处理
错误处理示例代码
错误码
- 网络请求异常时,catch方法接收到异常,异常错误码 请点击查看
- 错误常量
名称 | 参数类型 | 可读 | 可写 | 说明 |
NETWORK_MOBILE | number | 是 | 否 | 使用蜂窝网络时允许下载的位标志。 |
NETWORK_WIFI | number | 是 | 否 | 使用WLAN时允许下载的位标志。 |
ERROR_CANNOT_RESUME7+ | number | 是 | 否 | 某些临时错误导致的恢复下载失败。 |
ERROR_DEVICE_NOT_FOUND7+ | number | 是 | 否 | 找不到SD卡等存储设备。 |
ERROR_FILE_ALREADY_EXISTS7+ | number | 是 | 否 | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
ERROR_FILE_ERROR7+ | number | 是 | 否 | 文件操作失败。 |
ERROR_HTTP_DATA_ERROR7+ | number | 是 | 否 | HTTP传输失败。 |
ERROR_INSUFFICIENT_SPACE7+ | number | 是 | 否 | 存储空间不足。 |
ERROR_TOO_MANY_REDIRECTS7+ | number | 是 | 否 | 网络重定向过多导致的错误。 |
ERROR_UNHANDLED_HTTP_CODE7+ | number | 是 | 否 | 无法识别的HTTP代码。 |
ERROR_UNKNOWN7+ | number | 是 | 否 | 未知错误。 |
PAUSED_QUEUED_FOR_WIFI7+ | number | 是 | 否 | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
PAUSED_UNKNOWN7+ | number | 是 | 否 | 未知原因导致暂停下载。 |
PAUSED_WAITING_FOR_NETWORK7+ | number | 是 | 否 | 由于网络问题(例如网络断开)而暂停下载。 |
PAUSED_WAITING_TO_RETRY7+ | number | 是 | 否 | 发生网络错误,将重试下载会话。 |
SESSION_FAILED7+ | number | 是 | 否 | 下载会话已失败,将不会重试。 |
SESSION_PAUSED7+ | number | 是 | 否 | 下载会话已暂停。 |
SESSION_PENDING7+ | number | 是 | 否 | 正在调度下载会话。 |
SESSION_RUNNING7+ | number | 是 | 否 | 下载会话正在进行中。 |
SESSION_SUCCESSFUL7+ | number | 是 | 否 | 下载会话已完成。 |
约束与限制
在下述版本验证通过:
DevEco Studio: 4.1 Canary2(4.1.3.325), SDK: API11(4.1.0.36)
注意:除双向证书验证及证书锁定功能必须使用API11外,其余功能支持API9、API10
FAQ
- 服务器返回多个cookie,response.header中只能读取首个cookie。
由于该库底层依赖ohos.net.http模块,ohos.net.http也存在此问题,204.1.0.33 镜像版本已修复此问题。
目录结构
经常有很多小伙伴抱怨说:不知道学习鸿蒙开发哪些技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?
为了能够帮助到大家能够有规划的学习,这里特别整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。
《鸿蒙 (Harmony OS)开发学习手册》(共计892页)
如何快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
基于ArkTS 开发
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
OpenHarmony 开发环境搭建
《OpenHarmony源码解析》
- 搭建开发环境
- Windows 开发环境的搭建
- Ubuntu 开发环境搭建
- Linux 与 Windows 之间的文件共享
- ……
- 系统架构分析
- 构建子系统
- 启动流程
- 子系统
- 分布式任务调度子系统
- 分布式通信子系统
- 驱动子系统
- ……
OpenHarmony 设备开发学习手册