鸿蒙系统 使用 Axios 封装 HTTP 请求接口 示例
时间: 2025-07-08 17:17:00 浏览: 14
<think>好的,用户想要在鸿蒙系统中使用Axios封装HTTP请求的示例代码或教程。我需要先回顾一下相关的引用内容,确保回答准确。
首先,引用[1]提到了创建网络请求对象PolarisHttpRequest,包含配置参数、拦截器钩子和Axios实例。这说明封装的基础结构需要这些组件。然后引用[2]详细说明了请求和响应拦截器的使用方法,比如设置请求头的Authorization字段,处理token。引用[3]则提到了在HarmonyOS Next项目中如何添加Axios依赖,版本是2.2.2。
接下来,用户需要具体的示例代码。我应该分步骤说明,首先是安装依赖,然后创建封装类,定义配置和拦截器,最后提供使用示例。需要确保代码符合鸿蒙的环境,比如使用oh-package.json5添加依赖,并且代码结构符合ArkTS的语法。
另外,要注意拦截器的实现部分,如何在请求拦截器中添加token,响应拦截器处理错误。可能还需要处理鸿蒙系统的特定配置,比如baseURL和超时设置。同时,要提醒用户替换实际项目中的参数,如baseURL和token获取方式。
最后,生成相关问题时要围绕Axios封装、拦截器使用、依赖管理和错误处理等方面,确保覆盖用户可能遇到的后续问题。</think>以下是根据鸿蒙HarmonyOS系统特性封装的Axios HTTP请求实现方案,包含基础封装、拦截器配置和实战示例:
### 一、基础封装实现
1. **安装依赖**(oh-package.json5)
```json
{
"dependencies": {
"@ohos/axios": "2.2.2",
"@ohos/datauri": "2.2.2"
}
}
```
2. **创建HttpRequest类**(PolarisHttpRequest.ts)
```typescript
// 引用[1]基础结构实现
export class PolarisHttpRequest {
private config: HttpRequestConfig;
private interceptorHooks?: InterceptorHooks;
private instance: AxiosInstance;
constructor(config: HttpRequestConfig) {
this.config = config;
this.instance = axios.create(config);
// 初始化拦截器
this.setupInterceptors();
}
// 初始化拦截器(引用[2])
private setupInterceptors() {
this.instance.interceptors.request.use(
(config: InternalAxiosRequestConfig) => {
const token = 'your_token_here'; // 替换实际token获取逻辑
if (token) {
config.headers['Authorization'] = `Bearer ${token}`;
}
return config;
},
(error: AxiosError) => Promise.reject(error)
);
this.instance.interceptors.response.use(
(response: AxiosResponse) => response.data,
(error: AxiosError) => this.handleError(error)
);
}
// 公共请求方法
public async request<T>(config: HttpRequestConfig): Promise<T> {
return this.instance.request(config);
}
// 错误处理方法
private handleError(error: AxiosError) {
console.error(`[HTTP Error] ${error.code}: ${error.message}`);
return Promise.reject(error);
}
}
```
### 二、配置参数定义
```typescript
interface HttpRequestConfig extends AxiosRequestConfig {
baseURL?: string;
timeout?: number;
headers?: Record<string, string>;
}
interface InterceptorHooks {
requestInterceptor?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig;
responseInterceptor?: (response: AxiosResponse) => AxiosResponse;
}
```
### 三、使用示例
```typescript
// 初始化实例
const http = new PolarisHttpRequest({
baseURL: 'https://api.example.com',
timeout: 30000,
headers: {
'Content-Type': 'application/json'
}
});
// 发起GET请求
http.request({
method: 'GET',
url: '/users'
}).then(res => {
console.log('响应数据:', res);
}).catch(err => {
console.error('请求异常:', err);
});
```
关键特性说明:
1. **Token自动注入**:通过请求拦截器自动添加认证头[^2]
2. **统一错误处理**:响应拦截器集中处理异常状态码
3. **类型安全**:使用TypeScript接口定义配置参数
4. **可扩展性**:支持自定义请求/响应拦截器钩子[^1]
阅读全文
相关推荐


















