import axios, { AxiosResponse, AxiosError, AxiosRequestConfig } from '@ohos/axios'
import { iLoginUserModel, iResponseModel } from '../../models/datamodel'
import { promptAction, router } from '@kit.ArkUI'
const req = axios.create()
export class HdHttp {
static request<T>(method: string, url: string, paramsOrData?: object) {
try {
let reqConfig: AxiosRequestConfig = {
method: method,
url: url,
}
if (method == 'GET') {
reqConfig.params = paramsOrData
} else {
reqConfig.data = paramsOrData
}
let user = AppStorage.get<iLoginUserModel>('user')
if (user && user.token) {
reqConfig.headers = {
'Authorization': `Bearer ${user.token}`
}
}
let res: AxiosResponse<iResponseModel<T>> = req.request(reqConfig)
if (res.data.code != 10000) {
promptAction.showToast({ message: res.data.message })
return Promise.reject(res.data.message)
}
return res.data
} catch (err) {
let errObj: AxiosError = err
if (errObj.response?.status == 401) {
promptAction.showToast({ message: '登录已失效,请重新登录' })
router.replaceUrl({ url: 'pages/LoginPage' })
} else {
promptAction.showToast({ message: '网络异常:' + errObj.message })
}
return Promise.reject(errObj.message)
}
}
}