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. Time Zone, Leap Year, Date Format, Epoch Time 时区, 闰年, 日期格式

    前言 以前有写过一篇了, 但很乱, 这篇就作为它的整理版吧. Leap Year 闰年 闰年是指那些有 366 天, 二月份有 29号 的年份. 比如 2020年 有 2月29日, 所以 2020 就 ...

  2. SpringBoot——项目快速启动

    SpringBoot项目快速启动 对SpringBoot项目打包(执行Maven构建指令package)    执行后会生成对应的项目 jar包,在文件夹找到该文件    在对应文件夹下即可执行  j ...

  3. Maven 依赖项管理&&依赖范围

    依赖管理   使用坐标导入jar包     1.在pom.xml 中编写 <dependencies> 标签     2.在 <dependencies> 标签中使用 < ...

  4. Redis系列补充:聊聊布隆过滤器(go语言实践篇)

    ★ Redis24篇集合 1 介绍 布隆过滤器(Bloom Filter)是 Redis 4.0 版本之后提供的新功能,我们一般将它当做插件加载到 Redis Service服务器中,给 Redis ...

  5. 使用iis设置网站php版本为7.3

    内容:使用iis设置网站php版本为7.3这张图 是多少人的噩梦  早期的宝塔版本 没办法在线升级, php版本只能到7.1   默认就没有7.2以上版本   怎么办?可以在iis设置第一步: 第二步 ...

  6. USB3.0与USB2.0编码方式的区别

    首先,USB3.0传输的编码方式和USB2.0本质上是不同的. 1.USB3.0的编码方式 USB 3.0采用的是8b/10b编码方式,由于高速传输,信号干扰的问题,USB 3.0采用 8/10bit ...

  7. Blinn-Phong

    为什么出现Blinn-Phong 虽然Phong性能较高,但是在某些镜面反射条件下就会失效.比如下图,我们明显发现了一条明显的亮暗边界线,这在实际场景中是不应该发生的(实际场景中不会出现这种明显的过渡 ...

  8. nodejs 和 npm 版本对应关系

    一.nodejs 和 npm 的版本是有适配的 首先看下官网列明的大概匹配关系: 官网链接地址:https://nodejs.org/zh-cn/about/previous-releases 可以查 ...

  9. Kubernetes的RBAC权限控制

    role和roleBinding Role资源定义了哪些操作可以在哪些资源上执行.也可以直接控制访问的url的权限,下面的cluster也是这样. 查询所有service的demo: apiVersi ...

  10. 征服 Docker 镜像访问限制:KubeSphere v3.4.1 成功部署全攻略

    近期,KubeSphere 社区的讨论中频繁出现关于 Docker 官方镜像仓库访问受限的问题. 本文旨在为您提供一个详细的指南, 展示在 Docker 官方镜像访问受限的情况下,如何通过 KubeK ...