鸿蒙网络请求

鸿蒙系统不断进化,适配的库也越来越丰富,其中网络请求是应用的一大需求。

Axios 是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中,包括:

http 请求

Promise API

request 和 response 拦截器

转换 request 和 response 的 data 数据

自动转换 JSON data 数据

已经有同学针对鸿蒙进行了适配并封装了库ohos_axios,地址是:OpenHarmony-SIG/ohos_axios (gitee.com)

这里使用ohos_axios通过一个实际玩安卓项目的开发进行学习。

代码地址: carlshen/WanHarmony: Wanandroid For HarmonyOS (github.com)

必须感谢鸿洋大佬及其相关作者。

提到网络请求,就要处理异步及回调的逻辑。比如:promise和async/await区别

1 promise是es6的语法,async await是es7的新特性

2 Promise。是一种应用层的解决方案,它提供了一种方式来处理异步操作的结果,具有三种状态:pending(进行中)、resolved(已完成)和rejected(已失败)。

它允许开发者通过链式调用.then()方法来处理异步操作的结果,但这种方式可能导致回调地狱的问题,并且调试不方便。

3 async/await。是语言层的解决方案,它允许开发者像编写同步代码一样编写异步代码。async函数内部可以使用await等待异步操作的结果,这样可以避免回调地狱的问题。

async/await更加优雅简洁,代码看起来像同步代码一样,不需要像使用Promise那样调用.then()来获取返回结果,并且方便进行断点调试。

Axios的拦截器是它的一大特色,在请求或响应被 then 或 catch 处理前拦截它们,也方便进行调试监控。

// 添加请求拦截器

axios.interceptors.request.use((config:InternalAxiosRequestConfig) => {

// 对请求数据做点什么

return config;

}, (error:AxiosError) => {

// 对请求错误做些什么

return Promise.reject(error);

});

// 添加响应拦截器

axios.interceptors.response.use((response:AxiosResponse)=> {

// 对响应数据做点什么

return response;

}, (error:AxiosError)=> {

// 对响应错误做点什么

return Promise.reject(error);

});

相关推荐
youtootech2 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
三声三视3 小时前
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白
人工智能·ai·uni-app·aigc·ai编程·harmonyos
达子6663 小时前
第7章_HarmonyOS 图解 Ability公共事件与通知
华为·harmonyos
爱写代码的阿森3 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
爱写代码的阿森5 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil用户首选项读写详解
华为·harmonyos·鸿蒙·huawei
达子6666 小时前
第6章_HarmonyOS 图解 Ability任务调度
华为·harmonyos
FrameNotWork6 小时前
HarmonyOS 6.0 分栏布局与折叠适配
华为·harmonyos
爱写代码的阿森6 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森6 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
二流小码农7 小时前
鸿蒙开发:以登录案例了解代码架构MVVM
android·ios·harmonyos