【axios网络请求库】认识Axios库;axios发送请求、创建实例、创建拦截器、封装请求

目录

  • 1_认识Axios库
  • 2_axios发送请求
  • 3_axios创建实例
  • 4_axios的拦截器
  • 5_axios请求封装

1_认识Axios库

功能特点:

  • 在浏览器中发送 XMLHttpRequests 请求
  • 在 node.js 中发送 http请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求和响应数据

2_axios发送请求

支持多种请求方式:

  • axios(config)
  • axios.request(config)
  • axios.get(url[, config])
  • axios.delete(url[, config])
  • axios.head(url[, config])
  • axios.post(url[, data[, config]])
  • axios.put(url[, data[, config]])
  • axios.patch(url[, data[, config]])

有时候, 可能需求同时发送两个请求

  • 使用axios.all, 可以放入多个请求的数组.
  • axios.all([]) 返回的结果是一个数组,使用 axios.spread 可将数组 [res1,res2] 展开为 res1, res2

常见的配置选项

(前三个选项常用)

  • 请求地址 url: ‘/user’,

  • 请求类型 method: ‘get’,

  • 请求根路径 baseURL: ‘http://www.mt.com/api’,

  • 请求前的数据处理 transformRequest:[function(data){}],

  • 请求后的数据处理 transformResponse: [function(data){}],

  • 自定义的请求头 headers:{‘x-Requested-With’:‘XMLHttpRequest’},

  • URL查询对象 params:{ id: 12 }

  • 查询对象序列化函数 paramsSerializer: function(params){ }

  • request body为 data: { key: ‘aa’},

  • 超时设置 timeout: 1000,

demo1

// 1.发送request请求
axios.request({url: "http://123.207.32.32:8000/home/multidata",method: "get"
}).then(res => {console.log("res:", res.data)
})// 2.发送get请求
axios.get(`http://123.207.32.32:9001/lyric?id=500665346`).then(res => {console.log("res:", res.data.lrc)
})
axios.get("http://123.207.32.32:9001/lyric", {params: {id: 500665346}
}).then(res => {console.log("res:", res.data.lrc)
})// 3.发送post请求
axios.post("http://123.207.32.32:1888/02_param/postjson", {data: {name: "coderwhy",password: 123456}
}).then(res => {console.log("res", res.data)
})

demo2

// 1.baseURL
const baseURL = "http://123.207.32.32:8000"// 给axios实例配置公共的基础配置
axios.defaults.baseURL = baseURL
axios.defaults.timeout = 10000
axios.defaults.headers = {}// 1.get: /home/multidata
axios.get("/home/multidata").then(res => {console.log("res:", res.data)
})// 2.axios发送多个请求
// Promise.all
axios.all([axios.get("/home/multidata"),axios.get("http://123.207.32.32:9001/lyric?id=500665346")
]).then(res => {console.log("res:", res)
})

3_axios创建实例

从axios模块中导入对象时, 使用的实例是默认的实例;

  • 当给该实例设置一些默认配置时, 这些配置就被固定下来了.
  • 但是后续开发中, 某些配置可能会不太一样;
  • 比如某些请求需要使用特定的baseURL或者timeout等.
  • 这时,就可以创建新的实例, 并且传入属于该实例的配置信息

// axios默认库提供实例对象
axios.get("http://123.207.32.32:9001/lyric?id=500665346")// 创建其他的实例发送网络请求
const instance1 = axios.create({baseURL: "http://123.207.32.32:9001",timeout: 6000,headers: {}
})instance1.get("/lyric", {params: {id: 500665346}
}).then(res => {console.log("res:", res.data)
})const instance2 = axios.create({baseURL: "http://123.207.32.32:8000",timeout: 10000,headers: {}
})



4_axios的拦截器

axios的也可以设置拦截器:拦截每次请求和响应

  • axios.interceptors.request.use(请求成功拦截, 请求失败拦截)
  • axios.interceptors.response.use(响应成功拦截, 响应失败拦截)

demo

// 对实例配置拦截器
//【请求】
axios.interceptors.request.use((config) => {console.log("请求成功的拦截")// 1.开始loading的动画// 2.对原来的配置进行一些修改// 2.1. header// 2.2. 认证登录: token/cookie// 2.3. 请求参数进行某些转化return config
}, (err) => {console.log("请求失败的拦截")return err
})
//【响应】
axios.interceptors.response.use((res) => {console.log("响应成功的拦截")// 1.结束loading的动画// 2.对数据进行转化, 再返回数据return res.data
}, (err) => {console.log("响应失败的拦截:", err)return err
})axios.get("http://123.207.32.32:9001/lyric?id=500665346").then(res => {console.log("res:", res)
}).catch(err => {console.log("err:", err)
})

5_axios请求封装

便于以后突发情况,比如axios库不再维护

import axios from 'axios'class HYRequest {constructor(baseURL, timeout=10000) {this.instance = axios.create({baseURL,timeout})}request(config) {return new Promise((resolve, reject) => {this.instance.request(config).then(res => {resolve(res.data)}).catch(err => {reject(err)})})}get(config) {return this.request({ ...config, method: "get" })}post(config) {return this.request({ ...config, method: "post" })}
}export default new HYRequest("http://123.207.32.32:9001")




















































































































本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/58903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境下搭建使用缓存中间件Redis

缓存中间件Redis搭建与使用 前言正文1 提供安装环境2 下载安装3 修改启动配置4 启动服务5 使用6 关闭服务7 卸载 前言 redis服务将在linux系统中部署,本文前提是已经搭建一个linux系统,并配置好网络等。使用vmware搭建一个linux系统,可以参考…

Coal Wall Creation And Code Optimization

Code: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using ZongCaiGongZuoMian;public class CoalWall : MonoBehaviour {[SerializeField]Material mat;float zjInternal;//支架间隔float zjHeightMax;Transf…

Royal TSX 6 Mac多协议远程软件

Royal TSX是一款功能强大的远程桌面管理软件,适用于Mac操作系统。它允许用户通过一个集成的界面来管理和访问多个远程计算机和服务器。 Royal TSX支持多种远程协议,包括RDP、VNC、SSH、Telnet和FTP等,可以方便地连接到Windows、Linux、Mac和其…

非煤矿山风险监测预警算法 yolov8

非煤矿山风险监测预警算法通过yolov8网络模型深度学习算法框架,非煤矿山风险监测预警算法在煤矿关键地点安装摄像机等设备利用智能化视频识别技术,能够实时分析人员出入井口的情况,人数变化并检测作业状态。YOLO的结构非常简单,就…

ios开发 swift5 苹果系统自带的图标 SF Symbols

文章目录 1.官网app的下载和使用2.使用代码 1.官网app的下载和使用 苹果官网网址:SF Symbols 通过上面的网址可以下载dmg, 安装到自己的mac上 貌似下面这样不能展示出动画,还是要使用动画的代码 .bounce.up.byLayer2.使用代码 UIKit UIImage(system…

解决报错Java: 非法字符: ‘\ufeff‘

方法一:直接remove BOM,再重新启动程序。 方法二:用notpad打开,点击编码为utf-8格式,保存。

设置好以下几点Idea配置,极大提升研发效率

这里分享几点配置IntelliJ IDEA的建议,可以提升开发效率: 1.自定义代码风格(Code Style),统一项目代码风格 在IntelliJ IDEA中可以自定义代码风格,主要包括: 设置代码的缩进规则,如:缩进空格数,tab是否使用空格代替等。 在Settings - Editor - Code Style - Java中配置。 …

DockerFile常用命令

以下是常见的Dockerfile命令: FROM:FROM命令用于指定基础镜像。基础镜像是构建镜像的起点。例如,FROM ubuntu:latest表示使用最新版本的Ubuntu作为基础镜像。 MAINTAINER:MAINTAINER命令用于指定镜像的维护者信息。一般格式为&am…

GrapeCity Documents V6.0 Update 2发布,新增支持SpreadJS的.sjs文件格式

近日,GrapeCity Documents 正式迎来其V6.2 的发布更新,能够支持 SpreadJS 中 .sjs 类型的文件。这一重大更新将为用户带来更多地惊喜。 .sjs文件有两个关键优势:空间更小且导入导出速度更快。通过采用 .sjs格式,GcExcel实现了更高…

PO设计模式是selenium自动化测试中最佳的设计模式之一

Page Object Model:PO设计模式是selenium自动化测试中最佳的设计模式之一,主要体现在对界面交互细节的封装,也就是在实际测试中只关注业务流程就OK了传统的设计中,在新增测试用例之后,代码会有以下几个问题&#xff1a…

maven部署

一、下载Maven 地址:Maven – Download Apache Maven 二、解压缩,设置环境变量 tar -xvf apache-maven-3.8.8-bin.tar.gz export MAVEN_HOME/opt/apache-maven-3.8.8 export PATH$MAVEN_HOME/bin:$PATH echo $MAVEN_HOME echo $PATH mvn -v

uniapp中引入axios的错误?

场景 在unaipp中使用axios npm i axios 下载完成后 然后在页面中使用 axios.get(“http://3000/searchS”) 然后报错 Adapter http’ is not available in the build 原因 在 UniApp 中使用 Axios 发送 HTTP 请求时,如果出现错误 “Adapter http’ is not available…

Stable Diffusion Web UI的原理与使用

Stable Diffusion是一套基于Diffusion扩散模型生成技术的图片生成方案,随着技术的不断发展以及工业界对这套工程细节的不断优化,使其终于能在个人电脑上运行,本文将从github下载开始讲一讲如何使用Stable Diffusion Web UI进行AI图像的生成。…

水稻叶病害数据集(目标检测,yolo使用)

1.数据集文件夹 train文件夹(44229张),test文件夹(4741张),valid文件夹(6000张) 2.train文件夹展示 labels展示 标签txt展示 data.yaml文件展示 对数据集感兴趣的可以关注最后一行…

网络安全法+网络安全等级保护

网络安全法 2014年2月,中央网络安全和信息化领导小组成立,习主席当组长 2017年6月1日,网络安全法正式成立 网络安全是国家安全的重要组成部分没有网络安全就没有国家安全,没有信息化就没有现代化 网络安全法21条 网络安全法31条 …

[C/C++]天天酷跑游戏超详细教程-上篇

个人主页:北海 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C/C🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!&#x1f9…

视频剪辑音效处理软件有哪些?视频剪辑软件那个好用

音效是视频剪辑的重要部分,能起到画龙点睛的作用。在短视频平台中,一段出彩的音效能将原本平平无奇的视频变得生动有趣。那么,视频剪辑音效处理软件有哪些?本文会给大家介绍好用的音效处理软件,同时也会介绍视频剪辑音…

危险的套娃:攻击者在 PDF 文件中隐藏恶意Word 文档

据BleepingComputer消息,日本计算机紧急响应小组 (JPCERT) 日前分享了在2023 年 7 月检测到的利用PDF文档的新型攻击——PDF MalDoc攻击,能将恶意 Word 文件嵌入 PDF 来绕过安全检测。 JPCERT采样了一种多格式文件,能被大多数扫描引擎和工具识…

如何使用CSS实现一个带有动画效果的进度条?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTML 结构:⭐ CSS 样式:⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那…

BT8918D---按键模块

1 Preface/Foreword 中科蓝讯BT8918D模块支持:IO按键、AD按键 2 数据结构 2.1 按键事件映射表 typedef struct { u8 adc_val; u8 usage_id; } adkey_tbl_t; 按键功能配置表:adkey_table const adkey_tbl_t adkey_table[] { {0x0A, KEY_P…