返回顶部
分享到

鸿蒙中Axios数据请求的封装和配置方法

相关技巧 来源:互联网 作者:佚名 发布时间:2025-04-13 09:33:42 人浏览
摘要

适用于(HarmonyOS NEXT/5.0/API12+) 1.配置权限 应用级权限和系统级权限 2.配置网络请求的代码 1 2 3 requestPermissions: [ { name: ohos.permission.INTERNET } ], 3.下载在Entry中 下载Axios //终端中运行 ohpm install @ohos

适用于(HarmonyOS NEXT/5.0/API12+)

1.配置权限 应用级权限和系统级权限

2.配置网络请求的代码

1

2

3

"requestPermissions": [

  { "name": "ohos.permission.INTERNET" }

],

3.下载在Entry中 下载Axios

//终端中运行
ohpm install @ohos/axios

4.封装Http请求

实现思路:

//1.创建AXIOS的实例对象

//配置基地址,超时时间

//2.配置请求拦截器

//3.配置响应拦截器

//4.封装Htpp类

//5.创建并导出 http实例对象

//6.统一导出

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from "@ohos/axios"

import { logger } from "./Logger"

const baseURL = 'https://api-harmony-teach.itheima.net'

//1.创建AXIOS的实例对象

//配置基地址,超时时间

//create 创建一个新的Axios对象 可以多个接口使用

export  const instance =axios.create({

  baseURL,

  timeout:6000

})

//2.配置请求拦截器 (前端给后端的东西)

instance.interceptors.request.use((config:InternalAxiosRequestConfig)=>{

  const user = auth.getUser()

  if(user.token){

    config.headers.Authorization = `Bearer ${ user.token}`

  }

  return config

},(err: AxiosError) => {

  logger.error('Req Error', JSON.stringify(err))

  return Promise.reject(err)

})

//3.配置响应拦截器   后端给前端的东西

// instance.interceptors.response.use(()=>{成功} ,()=>{失败})

//拦截器interceptors

//response通常指的是网络请求的响应。这是一个结构体,用于封装服务器返回的信息,

//AxiosResponse是Axios库中的一个接口,用于表示HTTP响应。以便开发者可以轻松地访问响应的各个部分。

instance.interceptors.response.use((res: AxiosResponse) => {

  //成功

  if (res.data.code === 10000) {

    logger.debug('Req Success', JSON.stringify(res.data.data))

    return res.data.data

  }

  //请求成功,回传是错误的

  logger.error('Req Error', JSON.stringify(res.data))

  return Promise.reject(res.data)

}, (err: AxiosError) => {

  //失败返回的错误

  logger.error('Req Error', JSON.stringify(err))

  return Promise.reject(err)

})

//4.封装Htpp类

// 提供request方法

class Http {

  // Get 请求可以省略第二个泛型,因为axios默认是any任何值可传

  //ResponseData 响应数据类型 返回的数据(响应回来的数据) 

  //RequestData  请求数据类型 请求携带的参数

  //Object 给个默认值 有的是入参

 //AxiosResponse是Axios库中的一个接口,用于表示HTTP响应。以便开发者可以轻松地访问响应的各个部分。

  // request<T,D>

  //T是自己的,D是请求得到

  request<ResponseData, RequestData = Object>(config: AxiosRequestConfig<RequestData>) {

    return instance<null, ResponseData, RequestData>(config)

  }

}

//5.创建并导出 http实例对象

export const http = new Http()

5.页面中使用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from "@ohos/axios"

import { logger } from "./Logger"

const baseURL = 'https://api-harmony-teach.itheima.net'

//1.创建AXIOS的实例对象

//配置基地址,超时时间

//create 创建一个新的Axios对象 可以多个接口使用

export  const instance =axios.create({

  baseURL,

  timeout:6000

})

//2.配置请求拦截器 (前端给后端的东西)

instance.interceptors.request.use((config:InternalAxiosRequestConfig)=>{

  const user = auth.getUser()

  if(user.token){

    config.headers.Authorization = `Bearer ${ user.token}`

  }

  return config

},(err: AxiosError) => {

  logger.error('Req Error', JSON.stringify(err))

  return Promise.reject(err)

})

//3.配置响应拦截器   后端给前端的东西

// instance.interceptors.response.use(()=>{成功} ,()=>{失败})

//拦截器interceptors

//response通常指的是网络请求的响应。这是一个结构体,用于封装服务器返回的信息,

//AxiosResponse是Axios库中的一个接口,用于表示HTTP响应。以便开发者可以轻松地访问响应的各个部分。

instance.interceptors.response.use((res: AxiosResponse) => {

  //成功

  if (res.data.code === 10000) {

    logger.debug('Req Success', JSON.stringify(res.data.data))

    return res.data.data

  }

  //请求成功,回传是错误的

  logger.error('Req Error', JSON.stringify(res.data))

  return Promise.reject(res.data)

}, (err: AxiosError) => {

  //失败返回的错误

  logger.error('Req Error', JSON.stringify(err))

  return Promise.reject(err)

})

//4.封装Htpp类

// 提供request方法

class Http {

  // Get 请求可以省略第二个泛型,因为axios默认是any任何值可传

  //ResponseData 响应数据类型 返回的数据(响应回来的数据) 

  //RequestData  请求数据类型 请求携带的参数

  //Object 给个默认值 有的是入参

 //AxiosResponse是Axios库中的一个接口,用于表示HTTP响应。以便开发者可以轻松地访问响应的各个部分。

  // request<T,D>

  //T是自己的,D是请求得到

  request<ResponseData, RequestData = Object>(config: AxiosRequestConfig<RequestData>) {

    return instance<null, ResponseData, RequestData>(config)

  }

}

//5.创建并导出 http实例对象

export const http = new Http()


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 鸿蒙中Axios数据请求的封装和配置方法

    鸿蒙中Axios数据请求的封装和配置方法
    适用于(HarmonyOS NEXT/5.0/API12+) 1.配置权限 应用级权限和系统级权限 2.配置网络请求的代码 1 2 3 requestPermissions: [ { name: ohos.permission.INTERNET } ],
  • 鸿蒙中@State的原理使用详解(HarmonyOS 5)

    鸿蒙中@State的原理使用详解(HarmonyOS 5)
    一、@State在鸿蒙中是做什么的? @State是 HarmonyOS ArkTS 框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动 UI 的响应式编程模
  • kali虚拟机破解root密码的步骤

    kali虚拟机破解root密码的步骤
    kali虚拟机破解root密码 前言 kali6.6.15版本破解root密码,其他版本也可以根据这个步骤去尝试,方法大致是一样的。 一、重启(或者开机)
  • kynet.call使用介绍
    skynet.call 详细解析 1. 函数签名与参数 函数签名: 1 skynet.call(addr, typename, ...) addr:目标服务的地址(整数或字符串形式的服务名)。 typena
  • Git版本回退之reset和revert使用介绍

    Git版本回退之reset和revert使用介绍
    Git版本回退之reset和revert 在开发过程中,可能会遇到过错误提交的情况。这种情况下,先不要着急,可以通过以下两个命令来帮助你优雅的
  • 如何使用git reset进行多commit合并

    如何使用git reset进行多commit合并
    在开发分支下,往往会有多次提交,可能是feature,也可能是bugfix,如果git管理员基于commit进行打tag,这就比较麻烦,所以在打tag之前,最好
  • DeepSeek R1 Ollama本地化部署全攻略介绍

    DeepSeek R1 Ollama本地化部署全攻略介绍
    Ollama作为当前最受欢迎的本地大模型运行框架,为DeepSeek R1的私有化部署提供了便捷高效的解决方案。本文将深入讲解如何将Hugging Face格式的
  • HarmonyOS Next音乐播放器项目实现代码

    HarmonyOS Next音乐播放器项目实现代码
    HarmonyOS Next音乐播放器页面是一款基于鸿蒙生态系统开发的现代化音乐播放页面组件,采用了ArkTS语言和鸿蒙原生组件开发。该应用实现了基
  • Windows安装与配置Ollama的图文教程

    Windows安装与配置Ollama的图文教程
    Windows安装与配置Ollama 简介 本节学习如何在 Windows 系统中完成 Ollama 的安装与配置,主要分为以下几个部分: 访问官网直接完成下载 环境变量
  • 使用DeepSeek搭建个人知识库(在笔记本电脑上)

    使用DeepSeek搭建个人知识库(在笔记本电脑上)
    最近DeepSeek爆火,试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下,在笔记本电脑上部
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计