HarmonyOS鸿蒙NEXT中http请求工具如何封装?

HarmonyOS鸿蒙NEXT中http请求工具如何封装?

鸿蒙应用 HTTP 请求工具封装指南

在鸿蒙应用开发中,实现 HTTP 请求功能有两种主要途径:

  1. 使用系统内置模块:直接调用 @ohos.net.http 提供的原生能力。

  2. 封装第三方库 (推荐):采用前端广泛使用的 axios 库进行封装,提升开发效率和一致性。

本文重点介绍基于 axios 的封装方案:

1. 安装依赖

在项目的 Terminal 中执行以下命令安装 axios 鸿蒙适配版:

ohpm install @ohos/axios

2. 配置网络权限

鸿蒙应用访问网络必须声明权限。在工程目录 entry/src/main/module.json5 文件中添加 ohos.permission.INTERNET 权限声明:

{
  "requestPermissions": [
    {
      "name": "ohos.permission.INTERNET"
    }
  ]
}

3. 封装步骤

  • 创建 Axios 实例: 初始化一个 axios 实例,配置全局默认参数,例如:

    • baseURL: API 基础地址
    • timeout: 请求超时时间(毫秒)
    • headers: 公共请求头 (如 Content-Type)
  • 添加请求拦截器: 利用 interceptors.request.use 方法注册请求拦截器。在请求发出前执行统一操作,例如:

    • 注入身份认证 Token
    • 动态设置特定请求头
    • 对请求数据进行预处理
  • 添加响应拦截器: 利用 interceptors.response.use 方法注册响应拦截器。用于统一处理响应数据,例如:

    • 解析后端返回的数据结构
    • 根据 HTTP 状态码或自定义业务码进行全局错误处理(如 Token 失效跳转登录)
    • 统一转换响应数据格式
  • 封装具体请求方法: 基于配置好的 axios 实例,封装常用的 HTTP 方法(如 get, post, put, delete)。这些方法应:

    • 接收明确的参数:url, params (查询参数), data (请求体数据), config (自定义配置) 等。
    • 返回结构化的 Promise 对象,通常包含处理后的核心数据 (data)、状态码 (status) 以及可能的错误信息。
    • 暴露清晰的 API 供业务模块调用。

4. 导出与使用

将封装好的请求方法(如 httpGet, httpPost)或整个配置实例导出。业务层代码只需导入并使用这些封装方法,无需关心底层网络细节和通用处理逻辑。

封装优势:

  • 统一管理: 集中配置基础 URL、超时、请求头等,避免重复代码。
  • 增强复用性: 封装后的方法可在应用各处复用。
  • 提升可维护性: 拦截器集中处理通用逻辑(认证、错误处理、数据转换),修改点单一。
  • 灵活扩展: 拦截器机制提供了强大的扩展点,满足多样化的业务需求(如日志、重试、缓存)。
  • 开发效率: 符合前端开发者习惯的 axios API 设计,降低学习成本。

通过以上步骤,开发者可以高效地在鸿蒙应用中构建一个健壮、易用且易于维护的 HTTP 请求工具层。


更多关于HarmonyOS鸿蒙NEXT中http请求工具如何封装?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS NEXT中封装HTTP请求工具:

  1. 使用@ohos.net.http模块创建HttpRequest对象
  2. 封装GET/POST方法时设置url、header、parameters等参数
  3. 通过on(‘headerReceive’)监听响应头
  4. 使用request方法发送请求,在callback中处理响应
  5. 示例代码片段:
    const http = require('@ohos.net.http');
    let httpRequest = http.createHttp();
    httpRequest.request("https://example.com", 
    {method:"GET"}, (err,data)=>{...});
    

更多关于HarmonyOS鸿蒙NEXT中http请求工具如何封装?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS NEXT中封装HTTP请求工具,推荐使用@ohos/axios进行二次封装,具体实现如下:

  1. 基础封装示例:
import axios from '[@ohos](/user/ohos)/axios';

const http = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000,
  headers: {'Content-Type': 'application/json'}
});

// 请求拦截器
http.interceptors.request.use(config => {
  const token = AppStorage.get('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

// 响应拦截器
http.interceptors.response.use(
  response => {
    if (response.data.code !== 0) {
      return Promise.reject(response.data);
    }
    return response.data;
  },
  error => {
    if (error.response?.status === 401) {
      // 处理token过期
    }
    return Promise.reject(error);
  }
);

export default {
  get: (url, params) => http.get(url, {params}),
  post: (url, data) => http.post(url, data)
};
  1. 关键优化点:
  • 类型安全:为请求/响应添加TypeScript类型定义
  • 错误处理:统一封装网络错误和业务错误
  • 取消请求:集成AbortController实现请求取消
  • 缓存策略:可扩展添加内存缓存逻辑
  • 日志记录:开发环境添加请求日志
  1. 注意事项:
  • 确保在module.json5中声明网络权限
  • 真机调试时检查网络配置
  • 考虑添加请求重试机制
  • 对于大文件上传需单独处理

这种封装方式既保持了axios的易用性,又能满足HarmonyOS应用的特殊需求。

回到顶部