封装request之C版 --《摘自·进化论》

46 阅读1分钟
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)
    }
  }
}