一、axios的基本使用:

✿ 使用axios前必知细节:

1、axios 函数对象(可以作为axios(config)函数使用去发送请求,也可以作为对象调用方法axios.request(config)发送请求)

■ 查看源码发现,起初axios是一个函数,但后续又给它添加上了一些属性【方法属性】

2、[, ] 是可选参数列表 举例:axios.get(url[, config]),其中的[, config] 是可选参数

axios 函数对象可以调用自身axios(config)发送请求也可以调用属性的方法axios.request(config)发送请求的原理:

<script>
//一开始a只是一个函数
var a = function () {
console.log('hi');
}
var fn = function () {
console.log('hi');
}
//给a这个函数对象添加属性后,让它的属性指向某个函数,则a调用自身函数,或者调用属性fn的方法----效果是一样的
a.fn = fn;
console.log(a);
console.dir(a);
a();
a.fn();
</script>

1、axios(config):调用自身,通用/最本质的发任意类型请求的方法:

<button class="btn btn-primary">post请求</button>

//获取按钮
const btns = document.querySelectorAll('button');
btns[0].onclick = function (){
//调用axios方法来发送AJAx请求,axios方法的返回值是一个Promise对象(then方法可以拿到异步请求的结果)
axios({
//请求类型
method: 'post',
//URL
url:'http://localhost:3000/posts/2',
//设置请求体(即传输的数据)
data:{
title: "candy",
author: "i like"
}
}).then(response => {
console.log(response)
})
};

2、axios.request(config):调用属性的方法发送请求,等同于 axios(config)

<button class="btn btn-primary">post请求</button>

//获取按钮
const btns = document.querySelectorAll('button');
btns[0].onclick = function (){
//调用axios方法来发送AJAx请求,axios方法的返回值是一个Promise对象(then方法可以拿到异步请求的结果)
axios.request({
//请求类型
method: 'post',
//URL
url:'http://localhost:3000/posts/2',
//设置请求体(即传输的数据)
data:{
title: "candy",
author: "i like"
}
}).then(response => {
console.log(response)
})
};

3、使用axios的实例对象(通过axios.create([config]) 进行创建):

//一般创建axios实例时,传入一些默认配置
const instance = axios.create({
baseURL: 'https://some-domain.com/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
//instance 实例和 axios对象功能基本差不多
//使用axios的实例对象instance,方法的返回值是一个Promise对象(then方法可以拿到异步请求的结果)
instance({
//请求类型
method: 'GET',
//URL
url: '/getJoke',
//设置请求体(即传输的数据)
params:{
title: "candy",
author: "i like"
}
}).then(response => {
console.log(response);
})

✿ 使用axios(config) 方法 和创建 axios实例对象的区别?

​ ■ axios.create(config) 对axios请求进行封装,创建axios实例对象的意义不同请求接口拥有不同配置,创建新的axios实例就可以有新的配置来应对接口配置需求。每个axios实例对象都有自己特有的配置, 分别应用到不同要求的接口请求中。

​ ■ axios实例对象和axios基本相同,只是实例对象少了有取消请求和批量发请求的方法。

二、axios的拦截器(对请求、响应做预处理)

1、请求拦截器:axios.interceptors.request.use(成功处理函数,失败处理函数)

■ 请求拦截:

1,可能是config中有一些信息是不符合服务器的要求

2,希望每次发送网络请求,在界面可以显示有一个请求的图标,就是那个转呀转的圆圈

3,一些网络请求必须要有特殊信息,例如登录(需要有token)

2、响应拦截器:axios.interceptors.response.use(成功处理函数,失败处理函数)

■ 响应拦截:

1,对响应的数据进行格式处理

三、axios的取消请求

■ 作用:取消掉某些用户,多次不断地点击请求按钮而发送请求给服务器造成压力

■ 取消方式:

(例如通过构造函数来创建取消令牌):在配置对象中添加 cancelToken属性,然后拿到执行函数中的参数c(取消函数)

let cancel = null;
//检测上一次请求是否完成(没完成,取消当前的请求)
if(cancle != null){
cancle();
}
//axios发送请求
axios.get('/user/12345', {
cancelToken: new axios.CancelToken(function executor(c){//参数c是取消函数 cancel = c;
})
}).then(response => {
console.log(response);
cancel = null; //请求执行完毕,恢复cancel的初始值 });

学习axios必知必会(2)~axios基本使用、使用axios前必知细节、axios和实例对象区别、拦截器、取消请求的更多相关文章

  1. 五、Vue:使用axios库进行get和post、用拦截器对请求和响应进行预处理、Mock(数据模拟)

    一.axios [应用]进行请求和传表单 [axios中文档]:https://www.kancloud.cn/yunye/axios/234845 [vue-axios]:https://cn.vu ...

  2. Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装

    1.写在前面 最近在学习Vue2,遇到有些页面请求数据需要用户登录权限.服务器响应不符预期的问题,但是总不能每个页面都做单独处理吧,于是想到axios提供了拦截器这个好东西,再于是就出现了本文. 2. ...

  3. 使用Typescript重构axios(十四)——实现拦截器

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  4. 细说vue axios登录请求拦截器

    当我们在做接口请求时,比如判断登录超时时候,通常是接口返回一个特定的错误码,那如果我们每个接口都去判断一个耗时耗力,这个时候我们可以用拦截器去进行统一的http请求拦截. 1.安装配置axios cn ...

  5. axios 源码解析(下) 拦截器的详解

    axios的除了初始化配置外,其它有用的应该就是拦截器了,拦截器分为请求拦截器和响应拦截器两种: 请求拦截器    ;在请求发送前进行一些操作,例如在每个请求体里加上token,统一做了处理如果以后要 ...

  6. Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

    准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...

  7. vue axios 拦截器

    前言 项目中需要验证登录用户身份是否过期,是否有权限进行操作,所以需要根据后台返回不同的状态码进行判断. 第一次使用拦截器,文章中如有不对的地方还请各位大佬帮忙指正谢谢. 正文 axios的拦截器分为 ...

  8. axios拦截器的使用方法

    很多时候我们需要在发送请求和响应数据的时候做一些页面处理,比如在请求服务器之前先判断以下用户是登录(通过token判断),或者设置请求头header,或者在请求到数据之前页面显示loading等等,还 ...

  9. axios封装的拦截器的应用

    axios拦截器   页面发送http请求,很多情况我们要对请求和其响应进行特定的处理:如果请求数非常多,单独对每一个请求进行处理会变得非常麻烦,程序的优雅性也会大打折扣.好在强大的axios为开发者 ...

随机推荐

  1. cmake之譬判断cmake的版本

    note 有时候,可能使用的cmake语法 与cmake的版本有关系, 比如modern cmake. 这时候我们可以在 CMAKELISTS.TXT中 判断 cmakeLists.txt 代码 if ...

  2. 【九度OJ】题目1061:成绩排序 解题报告

    [九度OJ]题目1061:成绩排序 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1061 题目描述: 有N个学 ...

  3. 1114 - Easily Readable

    1114 - Easily Readable    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB ...

  4. 如何利用Python实现Office在线预览

    目前,市场对于Office在线预览功能的需求是很大的.对于我们用户本身来说,下载Office文件后再实现预览是极其不方便的,何况还有一些不能打开的专业文档.压缩文件等.此时,能提供在线预览服务的软件就 ...

  5. Java代码性能优化

    (1)在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并 ...

  6. Dev C++调用汇编

    参考: https://blog.csdn.net/ljx0305/article/details/5831742 https://www.cnblogs.com/jokerjason/p/95786 ...

  7. 本地修改配置hosts文件解决Github加载慢问题

    本地修改配置hosts文件解决Github加载慢问题 手动方式 hosts 文件在每个系统的位置不一,详情如下: Windows 系统:C:\Windows\System32\drivers\etc\ ...

  8. <学习opencv>opencv函数

    /*=========================================================================*/ // openCV中的函数 /*====== ...

  9. HTML网页设计基础笔记 • 【第3章 表单】

    全部章节   >>>> 本章目录 3.1 表单 3.1.1 表单概述 3.1.1 表单概述(续) 3.1.2 表单标签 3.1.3 表单数据的提交方式 3.2 输入框和按钮 3 ...

  10. Java初学者作业——编写 Java 程序,让用户输入指定数字实现产生随机数。

    返回本章节 返回作业目录 需求说明: 编写 Java 程序,让用户输入指定数字实现产生随机数.运行效果如下: 实现思路: 定义两个变量start和end来保存起始和结束值. 通过结束值减起始值得到变化 ...