1.安装与引入

  • Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中,官方文档
  • 在HTML文件中引入
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  • 在脚手架中使用
//安装axios
npm install axios -S
//引入
import axios from 'axios'

2.基本使用

  • axios()方法接收一个对象,在对象中指定请求方式和提交参数
<script>
//get请求参数
var query = {q:'vue',sort:"stars"}
//post请求参数
var data = {}
//token
var token = "xvcxvcxvcxv"
//发起请求
axios({
method:'get',//设置请求方法
baseURL:'http://127.0.0.1:80', //将自动加在 `url` 前面,除非 `url` 是一个绝对 URL
url:'/test',//是用于请求的服务器 URL
//params:query,//适用于get方法 相当于在url后面拼接 ?wd=js
data:{},//post请求的数据
headers:{ //即将被发送的自定义请求头
'Authorization':token, //为请求添加token
'X-Requested-With': 'XMLHttpRequest', //Ajax 请求
},
timeout: 1000,//如果请求花费的时间了超过 `timeout` 的时间,请求将被中断,并触发catch
responseType: 'json', // 默认json
}).then(res => {
//成功回调
console.log(res)
}).catch(err => {
//失败回调
console.log(err)
})
</script>
  • 常用的配置项
参数 说明
method 请求方式,默认get
url 请求地址
params get请求的query参数,数据类型为对象类型
data post请求的参数
baseURL baseURL 将自动加在 url 前面,除非 url 是一个绝对 URL
headers 即将被发送的自定义请求头,例如token,数据类型为对象类型
timeout 指定请求超时的毫秒数,请求将被中断,并触发catch
responseType 期望服务器响应的数据类型,默认json(标准格式就应该是json,即使是其他格式,也应该封装到json内)
  • 方法别名:将配置项中重要的3个参数(method,url,data)抽离出来,让代码更直观
axios.get(url[, config])
axios.post(url[, data[, config]])

3.响应结构

  • axios请求的响应包含以下信息:
属性 说明
data 服务器提供的响应数据
status HTTP 状态码 例如200
statusText 来自服务器响应的 HTTP 状态信息 例如 "OK"
headers 服务器响应的头
config 当前请求的配置信息

4.并发

  • 使用axios.all([promiase,promiase2])发起并发请求,待所有请求都回来后统一处理
<script>
new Vue({
el:"#app",
data: { },
created(){
//直接读取返回结果
this.getAllData()
//使用spread处理返回结果
this.getAllData2()
},
methods: {
getAllData(){
//接收2个promise对象
axios.all([this.getData(), this.getData2()])
.then(function(resArr){
//返回结果放入数组中
console.log('res1',resArr[0].data)
console.log('res2',resArr[1].data)
})
},
getAllData2(){
//接收2个promise对象
axios.all([this.getData(), this.getData2()])
.then(axios.spread(function (res1, res2) {
// 两个请求现在都执行完成
console.log('res1', res1.data)
console.log('res2', res2.data)
}))
},
getData(){
//返回promise对象
return axios.get('http://127.0.0.1:8086/getDouble?val=5')
},
getData2(){
//返回promise对象
return axios.get('http://127.0.0.1:8086/getTriple?val=10')
}
}
})
</script>

5.配置默认值

  • 给axios本身配置默认值
//入口文件
import Vue from 'vue'
import axios from 'axios' //统一配置接口域名
axios.defaults.baseURL = 'https://api.example.com'
//统一添加token
axios.defaults.headers.common['Authorization'] = window.localStorage.getItem("token")
//其他
//axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
axios.defaults.timeout = 2500
  • 给axios实例配置默认值
//创建实例
const instance = axios.create({
//默认配置
baseURL: 'https://api.example.com'
}); // 默认配置
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN
instance.defaults.timeout = 2500 //在vue中为了使所有的组件都能调用这个实例,可将其挂载到vue的原型链中
Vue.prototype.$ajax = instance
  • 优先级:请求配置 > 实例配置 > 全局配置

6.拦截器

  • 含义:在请求或响应被 then 或 catch 处理前拦截它们,一般用于处理公共逻辑,例如请求时统一添加token,请求失败时统一弹窗提示等等
  • 可以给axios本身添加拦截器,还可以给axios实例添加拦截器
  • 注意:在响应拦截器中,请求失败(404,401,跨域)将执行第二个回调
//入口文件
import Vue from 'vue'
import axios from 'axios' // 请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
config.headers.common['Authorization'] = window.localStorage.getItem("token")
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
}); // 响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
// 未登陆或者登陆过期,跳转登陆页面
return Promise.reject(error);
});

Vue.js axios的更多相关文章

  1. (vue.js)axios interceptors 拦截器中添加headers 属性

    (vue.js)axios interceptors 拦截器中添加headers 属性:http://www.codes51.com/itwd/4282111.html 问题: (vue.js)axi ...

  2. FastAPI实践项目:SayHello(FastAPI + vue.js + axios + element ui)

    目录 简介 翻版 VS 本尊 后端服务 源码 接下来 简介 这次带来的是FastAPI + vue.js + axios + element ui (一个html文件里使用的) 实现的<Flas ...

  3. vue.js axios使用

    1. 自定义配置 /** * Created by superman on 17/2/16. * http配置 */ import axios from 'axios' import utils fr ...

  4. asp.net mvc + vue.js + axios.js

    1.新建一个 MVC 应用程序 2.右键解决方案 添加VUE 3.搜索vue 1.安装axios.js ,用于数据请求,get , post axios

  5. .net core3.1 webapi + vue.js + axios实现跨域

    我所要讲述的是,基于.net core3.1环境下的webapi项目,如何去使用axios对接前端的vue项目 既然谈到axios,这里贴出axios的官方文档地址: http://www.axios ...

  6. vue.js - axios Get、Post方法传参给 .net core webapi。

    一:axios中是 Get请求: 1:在vue项目中通过params属性携带数据: let _self = this; axios({ method:'get', url:'http://localh ...

  7. vue.js axios实现跨域http请求接口

    跨域post实例,用到了qs组件来避开ajax信使请求,并兼容Android. import axios from 'axios'; import qs from 'qs'; axios.post(' ...

  8. Vue.js 2.x笔记:服务请求axios(8)

    1. axios简介 vue2.0之后,推荐使用axios. axios官方地址:https://github.com/axios/axios 2. axios安装 npm安装: npm instal ...

  9. 学习随笔:Vue.js与Django交互以及Ajax和axios

    1. Vue.js地址 Staticfile CDN(国内): https://cdn.staticfile.org/vue/2.2.2/vue.min.js unpkg:会保持和npm发布的最新的版 ...

  10. 推荐vue.js、layer.js、axios.js

    都是很简单又很实用的东西. vue.js,前端双向绑定框架. layer.js,前端遮罩层框架.(layui的一部分,可单独使用) axios.js,异步请求框架,用起来比jQuery的ajax舒服一 ...

随机推荐

  1. 二叉树的 Morris 中序遍历——O(1)空间复杂度

    回顾 问题陈述: 给定一棵二叉树,实现中序遍历并返回包含其中序序列的数组 例如给定下列二叉树: 我们按照左.根.右的顺序递归遍历二叉树,得到以下遍历: 最终中序遍历结果可以输出为: [3, 1, 9, ...

  2. 图解MQTT概念、mosquitto编译和部署 ,写代码,分别使用外网和本地服务器进行测试

    前沿提要: MQTT是什么不知道? 看这一篇:https://www.cnblogs.com/happybirthdaytoyou/p/10362336.html 阿里云官网玩不转? 看这一篇: ht ...

  3. Codeforces Round 973 (Div. 2) C

    #include <bits/stdc++.h> using namespace std; int T; int n; struct edge { int pre; int nxt; in ...

  4. Android系统之System Server大纲

    前言 System Server是android 基本服务的提供者,是android系统运行的最基本需求,所有server运行在一个叫system_process的进程中,system_process ...

  5. electron的两个进程

    electron 有两个类别的进程,一个是主进程,另一个是渲染进程 主进程: 启动后一直存在的,相当于一个树的主干并不会展示出来,是看不到的所有跟系统资源交互的操作都在这里进行操控渲染进程,新建或销毁 ...

  6. .NET高级调试 - 3.8线程操作

    简介 高级调试过程中,与线程与线程栈是打交道特别多的.因此如何查看线程与线程栈就显得至关重要了 查看线程 !Threads 使用 !t/!Threads 命令获取所有托管线程 含义 ThreadCou ...

  7. 基于 KubeKey 扩容 Kubernetes v1.24 Worker 节点实战

    前言 知识点 定级:入门级 KubeKey 扩容 Worker 节点 openEuler 操作系统的基本配置 Kubernets 基本命令 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不 ...

  8. 旧电脑配置玩魔兽世界带不动?云电脑轻松解决,用ToDesk!

    最近魔兽世界重新回归,不少游戏老玩家都摩拳擦掌准备上线回忆青春,但发现手里的旧电脑早已带不动游戏,硬要打开很容易出现画面卡顿.延迟严重,甚至频繁掉线,这些问题都让游戏乐趣大打折扣.但要为此再重新买一台 ...

  9. 轻松玩转pandas

    文章目录 1.pandas简介 2.pandas应用 3.pandas安装 4.Pandas 数据结构 - Series 5.Pandas 数据结构 - DataFrame 6.Pandas CSV ...

  10. springboot:调用接口返回的数据乱码解决

    从git拉下来项目后,运行服务,启动正常,但是使用swagger和postman调用服务接口出现乱码问题 每一个接口返回的数据是乱码,但是控制台打印的日志都是正常的,后续发现数据的返回类型不是常见的a ...