Axios请求(对于ajax的二次封装)——Axios请求的响应结构、默认配置

news2024/10/7 20:25:35

Axios请求(对于ajax的二次封装)——Axios请求的响应结构、默认配置

  • 知识回调(不懂就看这儿!)
  • 场景复现
  • 核心干货
    • axios请求的响应结构
      • 响应格式详解
      • 实际请求中的响应格式
    • axios请求的默认配置
      • 全局axios默认值(了解)
      • 自定义实例默认值
      • 自定义实例默认值在实际开发中的使用
      • 配置的优先级

知识回调(不懂就看这儿!)

知识专栏专栏链接
Axios知识专栏https://blog.csdn.net/xsl_hr/category_12287421.html?spm=1001.2014.3001.5482
axios起步——介绍和使用 post请求https://blog.csdn.net/XSL_HR/article/details/130141944
Axios请求(对ajax的二次封装)——Axios API、Axios实例、请求配置、Axios响应结构https://blog.csdn.net/XSL_HR/article/details/130159746

有关Axios的相关知识可以前往Axios知识专栏查看复习!!

场景复现

最近学习与前端相关的小程序时,接触了异步请求api的封装和实现,涉及到了很多底层的基础知识,比如ajaxaxios工具,因此计划用两个专栏来系统的学习关于axios和ajax的实用知识。
本期文章将重点介绍Axios请求的响应结构、默认配置

核心干货

在这里插入图片描述

🔥🔥🔥axios官方中文文档:https://axios-http.com/zh/
🔥🔥🔥ajax文档:https://www.runoob.com/ajax/ajax-tutorial.html

axios请求的响应结构

响应格式详解

一个请求的完整响应包含以下信息:👇👇👇

{
  // `data` 由服务器提供的响应
  data: {},

  // `status` 来自服务器响应的 HTTP 状态码
  status: 200,

  // `statusText` 来自服务器响应的 HTTP 状态信息
  statusText: 'OK',

  // `headers` 是服务器响应头
  // 所有的 header 名称都是小写,而且可以使用方括号语法访问
  // 例如: `response.headers['content-type']`
  headers: {},

  // `config` 是 `axios` 请求的配置信息
  config: {},

  // `request` 是生成此响应的请求
  // 在node.js中它是最后一个ClientRequest实例 (in redirects),
  // 在浏览器中则是 XMLHttpRequest 实例
  request: {}
}

当我们使用.then时,将会接收如下响应:👇👇👇

axios.get('/user/12345')
  .then(function (response) {
    console.log(response.data);
    console.log(response.status);
    console.log(response.statusText);
    console.log(response.headers);
    console.log(response.config);
  });

当我们使用 catch,或者传递一个rejection callback作为 then 的第二个参数时,响应可以通过 error 对象被使用。(后期会在错误处理部分详细介绍)

实际请求中的响应格式

在这里插入图片描述
当我们发起网络请求之后,浏览器的控制台中的网络面板会显示请求的状态。比如请求的状态状态码请求响应头的内容等等。

axios请求的默认配置

对于默认配置,我们可以指定默认配置,它将作用域每个请求。

全局axios默认值(了解)

// 设置默认的API地址
axios.defaults.baseURL = 'https://api.example.com'; 
// 设置所有的请求都会带上一个名为'Authorization'的HTTP头部 并且该头部值为AUTH_TOKEN变量所代表的内容
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
// 设置POST请求时默认使用'application/x-www-form-urlencoded'格式来编码数据
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

自定义实例默认值

// 创建实例时配置默认值
const instance = axios.create({
  baseURL: 'https://api.example.com'
});

// 创建实例后修改默认值
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

自定义实例默认值在实际开发中的使用

const request = axios.create({
    baseURL: '/store', // url = base url + request url
    timeout: 360000
    // withCredentials: true // send cookies when cross-domain requests
})
// Request interceptors
request.interceptors.request.use(
    (response) => {
        NProgressE.start()
        const satoken = localStorage.getItem('token')
        if (satoken !== '') {
            response.headers['token'] = satoken
        }
        return response
    },
    (error) => {
        NProgressE.error(true);
        Promise.reject(error)
    }
)

// Response interceptors
request.interceptors.response.use(
    (response) => {
        NProgressE.done(false)
        return response
    },
    (error) => {
        NProgressE.error(true);
        message.error(error.message)
        return Promise.reject(error)
    }
)

配置的优先级

配置将会按优先级进行合并。它的顺序是:在lib/defaults.js中找到的库默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后面的优先级要高于前面的。下面有一个例子:👇👇👇

/ 使用库提供的默认配置创建实例
// 此时超时配置的默认值是 `0`
const instance = axios.create();

// 重写库的超时默认值
// 现在,所有使用此实例的请求都将等待2.5秒,然后才会超时
instance.defaults.timeout = 2500;

// 重写此请求的超时时间,因为该请求需要很长时间
instance.get('/longRequest', {
  timeout: 5000
});

以上就是关于与axios请求相关的axios API、axios实例、axios请求配置的分享,相信看完这篇文章的小伙伴们一定有了一定的收获。当然,可能有不足的地方,欢迎大家在评论区留言指正!

下期文章将介绍axios拦截器的相关内容
感兴趣的小伙伴可以订阅本专栏,方便后续了解学习~
觉得这篇文章有用的小伙伴们可以点赞➕收藏➕关注哦~

在这里插入图片描述

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

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

相关文章

Debug | wget 的安装与使用(Windows)

!wget -nc http://labfile.oss.aliyuncs.com/courses/780/WeatherData.zip 报错信息: wget 不是内部或外部命令,也不是可运行的程序或批处理文件。 分析: 在jupyter notebook中做机器学习时导入数据使用!wget遇到了这个问题,查到…

轻松上手git代码版本管理工具--协同开发-冲突解决、线上分支合并以及使用pycharm操作git

一、协同开发 多人合作开发一个项目---->多人公用一个远程仓库 以后台项目为例: git init # git管理设置忽略文件.gitignore git add .git commit -m 第一次提交,写完了首页功能远程新建一个远程仓库(空) 创建一个origin git remote add origin git@gitee.com:xx…

穿戴规范智能识别系统 yolov7

穿戴规范智能识别系统通过yolov7python网络模型AI深度视觉学习算法,穿戴规范智能识别系统对工厂画面中人员穿戴行为自动识别分析,发现现场人员未按照规定穿戴着装,立即抓拍告警。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c…

垃圾满溢检测系统 yolov5

垃圾满溢检测系统通过pythonyolov5网络模型技术,垃圾满溢检测系统对控画面中小区内的垃圾桶进行7*24小时不间断监控,发现垃圾桶溢满周围有堆积物立即触发预警推送给相关人员处理。YOLOv5中在训练模型阶段仍然使用了Mosaic数据增强方法,该算法…

kubeadm方式部署k8s最新版本V1.26.2

Kubernetes核心概念 Master主要负责资源调度,控制副本,和提供统一访问集群的入口。--核心节点也是管理节点 Node是Kubernetes集群架构中运行Pod的服务节点。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿…

测试7年,去过阿里也去过小公司,给你们年轻人一个忠告...

你眼中的软件测试岗位是怎样的?大部分人可能会给出这样的回答:“测试?简单啊,没什么技术含量,无非就是看需求、看业务手册、看设计文档、然后点点功能是否实现,麻烦点的就是测试下部署安装是否出现兼容性问…

分布式事务Seata原理

Seata 是一款开源的分布式事务解决方案,致力于提供高性能与简单易用的分布式事务服务,为用户提供了 AT、TCC、SAGA 和 XA 几种不同的事务模式。Seata AT模式是基于XA事务演进而来,需要数据库支持。AT 模式的特点就是对业务无入侵式&#xff0…

【故障定位】基于多元宇宙算法的主动配电网故障定位方法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

LeetCode 37. 解数独

一、题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图&#x…

如果重回大学时光

目录如果重回大学时光1. 多参加社团活动,结交更多的朋友2. 认真考虑专业分流方向3. 根据兴趣和能力选择适合自己的出路4. 为未来做好准备,规划职业发展如果重回大学时光 当前我是一名普通的码农,还有几个月,又将有一批大学生将毕…

vue实现美观大方的动漫、cos、帖子类型网站

一、先上效果图 1.项目demo预览:点击预览 参照半次元的榜单-绘画榜、榜单-COS榜、榜单-写作榜、个人中心、登录注册页面,导航栏等,分别实现页面排版、数据交互、基础框架布局搭建以及自定义vue组件合理的封装及使用。在vue项目开发过程中&a…

梦中情树---二叉树

前言: 今天就来讲树的一种特殊结构---二叉树 当然先来给大家看一张图片 看到这棵树了吗?它从根开始,每个结点都有且仅有两个分支,这个结构就是我们的二叉树。 其实我们上次讲的堆也可以看成一棵二叉树,但是人家的本质…

【python】Jupyter的使用(python代码编辑器)

文章目录一、Jupyter的介绍1、Jupyter是什么?2、Jupyter有什么独特之处?二、Jupyter的安装1、首先要下载python2、用pip命令下载Jupyter三、Jupyter的使用1、运行Jupyter2、简要介绍Jupyter的使用方法3、快捷键的使用四、总结一、Jupyter的介绍 1、Jupy…

安卓系统软键盘初步分析

初步分析的相关日志 复现log: 11-05 14:01:24.768 7991 7991 V InputMethodManager: onViewClicked: true 11-05 14:01:24.768 7991 7991 D InputMethodManager: showSoftInput() viewandroidx.appcompat.widget.AppCompatEditText{bd0acc9 VFED..CL. .F.P..ID 0,0-900,9…

C# 基础:创建、数据类型转换、基本运算符、

VS 快捷键 Ctri K D 代码整理 Ctri KM O 代码收缩 Ctri J 弹出提示 halcon 窗体应用 添加在线第三方库 右键项目名 --> 管理NuGet程序包 halcon 界面,创建选择 添加halcon离线动态链接库 右键引用 --> 添加引用 --> 选择动态链接库 .dll文件 导入…

22勤于思考:gRPC都有哪些优势和不足?

如果你能从专栏的开篇词开始读到这篇文章并且能够在过程中认真思考,那么我相信你目前已经能够对gRPC有了较为充分了解。在专栏的最后几节中,我们抽出一篇文章。来探讨一下gRPC有哪些优势和不足,因为只有这样我们才能取其精华,去其糟粕,学习gRPC框架设计的优点,还能反观出…

NLP领域顶级会议和期刊汇总(附CCF最新推荐目录)

研究NLP需要关注学术界or大厂AI Lab最新的科研动态,了解技术发展的趋势,写论文才能下笔如有神。找到了论文就能找到要复现的代码和要用到的数据集。 掌握科研动态也有助于提早做好产品规划以及技术预研。 对于NLPer而言,了解科研动态最好的方…

总结:网卡

一、背景 经常听到eth0,bond0这些概念,好奇他们的区别,于是有了此篇文章记录下。 二、介绍 网卡:即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯…

一把LOL的时间我入门了Go语言

走进 Go 语言~ 前言: Go 语言是由 Google 公司推出的一款新的编程语言,作为谷歌的亲儿子,发展势头迅猛,各个大厂目前都在积极推进 Go 语言的使用。Go 是云计算、云原生、区块链等众多前沿领域的首推语言,目前流行的 …

RocketMQ-01

1. MQ介绍 1.1 为什么要用MQ 消息队列是一种“先进先出”的数据结构 其应用场景主要包含以下3个方面 应用解耦 系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任…