Axios的封装

200 阅读1分钟

下载

ohpm install @ohos/axios

封装

  1. 导入axios
import axios from '@ohos/axios'
  1. 实例化,通用配置
    //实例化,通用配置
const instance=axios.create({
  // 基地址
  baseURL:"",
  timeout:5000
})
  1. 请求拦截器
// 请求拦截器
instance.interceptors.request.use((config:InternalAxiosRequestConfig)=>{
  return config
},(err:Error)=>{
  // 失败返回err
  return Promise.reject(err)
})
  1. 响应拦截器
//响应拦截器
instance.interceptors.response.use((response:AxiosResponse)=>{
  return response
},(err:AxiosError)=>{
  return Promise.reject(err)
})
  1. 规范化
// 抽取公共部分
export interface HttpResponse<T> {
  code: string
  msg: string
  result: T
}

// 简化后续编码
export type ResponseType<T> = AxiosResponse<HttpResponse<T>>


export class RequestAxios {
  static get<T>(url: string, params?: object): Promise<ResponseType<T>> {
    return instance.get<null, ResponseType<T>>(url, { params })
  }

  static post<T>(url: string, data?: object): Promise<ResponseType<T>> {
    return instance.post<null, ResponseType<T>>(url, data)
  }

  static delete<T>(url: string, data?: object): Promise<ResponseType<T>> {
    return instance.delete<null, ResponseType<T>>(url, data)
  }

  static put<T>(url: string, data?: object): Promise<ResponseType<T>> {
    return instance.put<null, ResponseType<T>>(url, data)
  }
}
  1. 导出
export * from './apis/Request'
  1. 使用
RequestAxios.get<参数>('接口')