鸿蒙HarmonyOS NEXT中网络库的选择

Axios、http、rcp介绍

Axios

Axios ,是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中。本库基于Axios 原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。地址:https://gitee.com/openharmony-sig/ohos_axios

@ohos.net.http

@ohos.net.http模块是鸿蒙操作系统(HarmonyOS)中用于进行HTTP数据请求的一个功能模块。它允许应用通过HTTP协议发起数据请求,支持多种常见的HTTP方法,包括GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE和CONNECT。

@hms.collaboration.rcp

Remote Communication Kit中的@hms.collaboration.rcp(后续简称RCP)指的是远程通信平台(remote communication platform),RCP提供了网络数据请求功能,相较于Network Kit中HTTP请求能力,RCP更具易用性,且拥有更多的功能。在开发过程中,如果有些场景使用Network Kit中HTTP请求能力达不到预期或无法实现,那么就可以尝试使用RCP中的数据请求功能来实现。

Axios、http、rcp区别

Axios优缺点

优点:

  • http get、post、delete、put、patch 请求
  • Promise API
  • request 和 response 拦截器
  • 转换 request 和 response 的 data 数据
  • 自动转换 JSON data 数据
  • 支持设置代理
  • 支持上传下载文件

缺点:

  • 网络请求不可取消
  • 非官方库需要依赖社区

http、rcp官方对比区别

001.png
002.png
003.png

RCP主要功能

实现基础的网络请求

在创建session会话后,通过创建请求对象并传入第二个参数且指定为PATCH,然后通过session.fetch()发起请求即可。

  1. 导入rcp模块。
  2. 创建headers,设置可接受的数据内容的类型为json字符串;创建modifiedContent,传入想要修改的内容。
  3. 调用rcp.createSession()创建通信会话对象session。
  4. 使用new rcp.Request()方法创建请求对象req。
  5. 调用session.fetch()方法发起请求。
  6. 获取响应结果。
// 定义请求头
let headers: rcp.RequestHeaders = {
  'accept': 'application/json'
};
// 定义要修改的内容
let modifiedContent: UserInfo = {
  'userName': 'xxxxxx'
};
const securityConfig: rcp.SecurityConfiguration = {
  tlsOptions: {
    tlsVersion: 'TlsV1.3'
  }
};
// 创建通信会话对象
const session = rcp.createSession({ requestConfiguration: { security: securityConfig } });
// 定义请求对象rep
let req = new rcp.Request('http://example.com/fetch', 'PATCH', headers, modifiedContent);
// 发起请求
session.fetch(req).then((response) => {
  Logger.info(`Request succeeded, message is ${JSON.stringify(response)}`);
}).catch((err: BusinessError) => {
  Logger.error(`err: err code is ${err.code}, err message is ${JSON.stringify(err)}`);
});

实现对DNS的定制设置

通过RCP模块,能够实现对DNS的定制设置。开发人员可以按自己的需要配置DNS,包括自定义DNS服务器、自定义静态DNS规则和配置HTTPS上的DNS,都可以通过DnsConfiguration设置。DnsConfiguration中可设置dnsRules、dnsOverHttps。

实现多表单提交

在创建session会话后,通过new rcp.Request()的第四个参数传入MultipartForm,然后通过rcp.fetch()发起POST请求将多个表单数据携带上传至服务端。

  1. 导入rcp模块。
  2. 设置请求头类型、配置HTTP请求的超时值、HTTP请求中包含的cookie和设置传输数据范围。
  3. 调用rcp.createSession()创建通信会话对象。
  4. 通过new rcp.MultipartForm()设置多表单数据。
  5. 使用new rcp.Request()创建请求对象,调用session.fetch()方法发起请求。
  6. 处理响应结果。

拦截器的定义和使用

  1. 导入rcp模块。
  2. 定义RequestUrlChangeInterceptor拦截器和ResponseHeaderRemoveInterceptor拦截器。
  3. 在intercept()方法中实现对请求/响应的修改逻辑。

总结

RCP提供了网络数据请求功能,相较于Network Kit中HTTP请求能力,RCP更具易用性;相较于Axios中,更加贴近HarmonyOS NEXT系统需求,而且官方也建议使用RCP网络请求框架,所以建议大家使用RCP或者基于RCP自研。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容