一、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. openstack 一键部署云主机

    两边虚拟机时间不一样cinder会报错. 在computer节输入命令 ntpdate 192.168.10.100 systemctl restart openstack-cinder-volume ...

  2. MyBatis学习(三)MyBatis基于动态代理方式的增删改查

    1.前言 上一期讲到MyBatis-Statement版本的增删改查.可以发现.这种代码写下来冗余的地方特别多.写一套没啥.如果涉及到多表多查询的时候就容易出现问题.故.官方推荐了一种方法.即MyBa ...

  3. velocity使用foreach进行遍历时$velocityCount不起作用

    把$velocityCount替换成$foreach.count 例如 #if($foreach.count != $columns.size()),#end

  4. cmake配置MFC项目属性

    MFC的使用 使用下面的代码设置为: # 设置MFC的使用 SET(CMAKE_MFC_FLAG 2) 这里的 2 代表: 在共享 DLL 中使用 MFC, 1代表在静态库中使用 MFC 设置字符集 ...

  5. 【LeetCode】940. Distinct Subsequences II 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...

  6. window11连接局域网共享失败处理办法

    第一步1.按 Win + R 组合键,打开运行,并输入:gpedit.msc 命令,确定或回车,可以快速打开本地组策略编辑器2.本地组策略编辑器窗口中,依次展开到:计算机配置 - 管理模板 - 网络 ...

  7. griffin环境搭建及功能测试

    目录 1 准备 mysql hive hadoop spark livy es maven 配置环境变量 2 安装griffin 配置配置文件 编译 部署jar包 3 批处理测试 准确度度量 Accu ...

  8. 家用路由器也能充当Web服务器?路由器插件开发心得

    起因 最近刚刚结束考研,开始有时间写文章了.在复习的时候中,经常忍不住折腾各种东西,于是有一天看中了我手上的华为路由器.什么?华为路由器,你可能有这样的疑问,华为路由器不是自研的芯片吗,就像我手上这台 ...

  9. 自动化集成:Docker容器入门简介

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...

  10. Trial-faster-rcnn

    目录 motivation 实验设置 实验结果 motivation 试一下faster rcnn的代码, 主要想看看backbone训练一部分好呢还是全部都训练好呢? 实验设置 Attribute ...