
基于@ohos/axios的网络请求能力
简介
Axios是一个基于promise的网络请求库,可以运行node.js和浏览器中。基于Axios原库v1.3.4GitHub版本进行适配,使其可以运行在OpenHarmony并沿用其现有用法和特性。
- http请求。
- request和 response拦截器。
- 转换request和response的data数据。
- 自动转换JSON data数据。
下载与安装三方库
// 在终端cd到需要使用三方库的module 运行下面命令 ohpm install @ohos/axios
需要使用到的权限:ohos.permission.INTERNET。
场景一:使用axios发送常规请求
如:axios.get<T = any, R = AxiosResponse, D = any>(url)
- R: 是响应体的类型。当服务器返回一个响应时,响应体通常是一个JSON对象。R就是这个JSON对象的类型。默认情况下,R是AxiosResponse,这意味着响应体是一个AxiosResponse对象,它的data属性是T类型的
- D: 是请求参数的类型。当发送一个GET请求时,可能会在URL中添加一些查询参数。D就是这些查询参数的类型。参数为空情况下,D是null类型。
发送一个get请求获取服务器端的JSON字符串
使用axios来获取,performanceTiming计算HTTP请求的各个阶段所花费的时间。
将请求结果显示。
使用axios为服务端的JSON添加data数据这个时候使用POST请求。
axios.post<T = any, R = AxiosResponse, D = any>(url)
T: 是响应数据类型。当发送一个 POST 请求时,客户端可能会收到一个 JSON 对象。T 就是这个 JSON 对象的类型。默认情况下,T 是 any,这意味着可以接收任何类型的数据。
这里可以看到服务器端的data数据上传成功。
错误处理
参考文档:HTTP错误码。
场景二:请求拦截器与响应拦截器的使用
发送一段带配置的请求
请求拦截器
在请求发送前进行必要操作处理,例如设置请求头,获取请求配置或者修改,设置超时时间等,相当于是对每个接口里相同操作的一个封装。
响应体结构
新增performanceTiming的一些属性定义。
响应拦截器
同理,响应拦截器也是如此功能,只是在请求得到响应之后,对响应体的一些处理。
场景三:上传下载文件
上传文件
上传示例
- 上传类型支持uri和ArrayBuffer,uri支持“internal”协议类型和沙箱路径,仅支持"internal"协议类型,"internal://cache/"为必填字段,示例: internal://cache/path/to/file.txt;沙箱路径示例:cacheDir + '/hello.txt'
- 上传参数context:当uri为沙箱路径,无需传参context;若uri为“internal”协议类型,必须传参context
FormData 对象介绍
FormData可以将表单字段的键值对以键值对的方式添加,同时也支持添加文件,在文件上传的场景中,我们可以使用FormData对象来收集表单数据,包括文件和其他文本字段,然后将其发送到后端服务器。
Axios可以通过FormData对象上传文件,在FormData中追加文件,我们需要用POST方法,再配置headers,需要这个浏览器才知道是表单。
这里模拟前后端交互,下方为服务端模拟代码,其实就是一个上传的方法,首先通过MultipartFile接收文件。
下载文件
下载文件时,如果filePath已存在该文件则下载失败,下载之前需要先删除文件。
