需要配置 ohos.permission.INTERNET权限。在工程目录entry\src\main中找到module.json5文件,配置网络请求权限。
{
“module”: {
“name”: “entry”,
“type”: “entry”,
“description”: “$string:module_desc”,
“mainElement”: “EntryAbility”,
“deviceTypes”: [
“phone”
],
“requestPermissions”: [
{
“name”: “ohos.permission.INTERNET”
}
]
}
}
简单使用
import axios from ‘@ohos/axios’
//创建axios的实例
const instance = axios.create({
baseURL: “http://xx.xx.xx.xx”, //基路径,要看API帮助文档的特征来确定基路径
timeout: 5000, //请求超时的时间
headers: {
“Content-Type”: “application/json”
}
})
//响应拦截器,通过响应拦截器进一步对返回的数据做处理
instance.interceptors.response.use((response) => {
//只返回接口有数据的结果
if (200 === response.status) {
return response.data; //接口返回的数据
}
return Promise.reject(response); //表示请求有错,交给catch来处理结构
}, err => {
return Promise.reject(err)
})
/**
- get请求
- @param params = {} 查询参数
- @returns
*/
export function httpGet(url:string, params = {}) {
return instance.get(url, {
params
})
}
/**
- post请求
- @param data = {} 请求体数据
- @returns
*/
export function httpPost(url:string, data = {}) {
return instance.post(url, {
data
})
}
axios模块封装及使用
axios模块封装:
//AxiosHttp.ets
import axios, {
AxiosInstance,
AxiosRequestConfig,
AxiosRequestHeaders,
AxiosResponse,
InternalAxiosRequestConfig
} from “@ohos/axios”;
import { LogUtils } from ‘…/utils/LogUtils’;
/**
- 定义接口响应包装类
*/
export interface BaseResponse {
//wanAndroid-API响应体
errorCode: number
errorMsg: string
//拓展xxx-API响应体
}
/**
- 接口实现类包装,例如有其他业务可以再次继承实现xxxResponse
*/
export interface ApiResponse<T = any> extends BaseResponse {
//wanAndroid-API响应体
data: T | any;
//拓展xxx-API响应体
}
/**
- 封装后,不支持传入拦截器
- 需要自己定义接口继承 AxiosRequestConfig类型
- 从而支持传入拦截器,但拦截器选项应为可选属性
- 之后请求实例传入的options为继承了AxiosRequestConfig的自定义类型
*/