鸿蒙开发 03 封装 @ohos/axios (最新深度封装)
1、安装 @ohos/axios
ohpm install @ohos/axios
Tips:按住Ctrl + Alt + Shift + S 可以查看你的 SDK 版本,如果你不是最新版(api 12)的话请降低 axios 的版本,不然会爆下面的错误:
ERROR: Failed :entry:default@MergeProfile…
hvigor ERROR: The compatibleSdkVersion 9 cannot be smaller than version 12 declared in library [:library]
as the library might be using APIS not available in 9
hvigor ERROR: BUILD FAILED in 256 ms
"@ohos/axios": "2.0.0"
2、开始封装
2.1 新建 utils 文件夹 和 api 文件夹
2.2 在 utils 文件夹里新建 http.ts
import axios, {
AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from "@ohos/axios";
// axios 请求配置
const config = {
baseURL:'http://localhost:8080',
// baseURL: '/api',
timeout: 1000
}
// 定义返回值类型
interface Result<T = any> {
code: number;
message: string;
data: T;
}
class Http {
// axios 实例
private instance: AxiosInstance;
// 构造函数初始化
constructor(config: AxiosRequestConfig) {
this.instance = axios.create(config);
//定义拦截器
this.interceptors();
}
private interceptors() {
// axios 发送请求之前的处理
this.instance.interceptors.request.use((config: InternalAxiosRequestConfig) => {
// 在请求头部携带token
// let token = sessionStorage.getItem('token');
let token = '';
if (token) {
config.headers!['token'] = token;
// 把 token 放到 headers 里面
// (config.headers as AxiosRequestHeaders).token = token;
}
console.log('' + config);
return config;
}, (error: any) => {
error.data = {