HarmonyOS 鸿蒙Next axios封装

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next axios封装 应用网络接口请求封装库,axios使用及封装

2 回复

在此基础上还可以定义get、post等进一步简化逻辑:

//封装网络请求
import axios, { AxiosError, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from '@ohos/axios'
import { IStandardBackInfo, IUserToken } from './interfaces'
import { promptAction } from '@kit.ArkUI'

//定义基地址
const instance = axios.create({ baseURL: 'https://www.abcdefg.com' })

//添加请求拦截器
instance.interceptors.request.use((config: InternalAxiosRequestConfig) => {
  const userTokens = AppStorage.get("userToken") as IUserToken
  const userToken = userTokens.token
  const userTokenRefresh = userTokens.refresh_token
  const ifRefresh = AppStorage.get("ifRefresh") as boolean
  if (userToken !== '') {
    if (ifRefresh) {
      config.headers.Authorization = `Bearer ${userTokenRefresh}`
    } else {
      config.headers.Authorization = `Beare ${userToken}`
    }
  }
  return config
}, (error: AxiosError) => {
  return Promise.reject(error)
})

//添加响应拦截器
instance.interceptors.response.use((response: AxiosResponse) => {
  return response
}, async (error: AxiosError) => {
  if (error.response?.status === 400) {
    AppStorage.setOrCreate("ifRefresh", true)
    promptAction.showToast({
      message: JSON.stringify(error.response.data),
      duration: 1000
    })
  } else if (error.response?.status === 401) {
    const resData = await sendRequest<IStandardBackInfo<string>, null>({
      url: '/v1_0/authorizations',
      method: 'put'
    })
    AppStorage.set("userToken", resData.data.data["token"])
    AppStorage.setOrCreate("ifRefresh", false)
  }
  return Promise.reject(error)
})

//T响应类型,D提交类型
export function sendRequest<T = null, D = null>(config?: AxiosRequestConfig<D>) {
  return instance<null, AxiosResponse<T, null>, D>(config)
}

更多关于HarmonyOS 鸿蒙Next axios封装的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对“HarmonyOS 鸿蒙Next axios封装”的问题,以下是专业且简洁的回答:

在HarmonyOS鸿蒙系统中进行axios封装,主要涉及到网络请求的封装与管理。axios是一个基于Promise的HTTP客户端,常用于浏览器和node.js环境中发送异步HTTP请求。在鸿蒙系统中,虽然原生并不直接支持axios,但你可以通过引入JavaScript运行环境(如JerkScript或其他兼容JavaScript的框架)来实现axios的使用。

封装axios时,你可以创建一个axios实例,并配置基础URL、超时时间、请求头等参数。然后,根据业务需求封装不同的HTTP方法(如get、post、put、delete等),并在每个方法中处理请求和响应的拦截器,以实现统一的错误处理、数据格式化等功能。

此外,考虑到鸿蒙系统的多设备兼容性,你还需要确保封装的axios能够在不同设备(如手机、平板、智慧屏等)上正常运行,并处理可能出现的跨设备兼容性问题。

如果在进行axios封装时遇到具体问题,如请求失败、数据格式不正确等,可以检查网络配置、请求参数和响应数据处理逻辑是否正确。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部