axios 是一個(gè)基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端,它本身具有以下特征:
從瀏覽器中創(chuàng)建 XMLHttpRequest
從 node.js 發(fā)出 http 請求
支持 Promise API
攔截請求和響應(yīng)
轉(zhuǎn)換請求和響應(yīng)數(shù)據(jù)
取消請求
自動轉(zhuǎn)換JSON數(shù)據(jù)
客戶端支持防止 CSRF/XSRF
1.將axios 掛載在vue原型上,使全局可以使用
Vue.prototype.$axios = axios
2.定義基礎(chǔ)路徑
this.$axios.defaults.baseURL = '127.0.0.1:3000/'
3. 發(fā)送get請求
this.$axios.get('index').then(res => {
//請求的數(shù)據(jù)存儲在res.data 中
})
4.post請求
this.$axios.post('login',{user:123,pwd:123}).then(res => {
//請求的數(shù)據(jù)存儲在res.data 中
})
5.多并發(fā)請求
var r1 = this.$axios.get('index')
var r2 = this.$axios.post('login',{user:123,pwd:123})
this.$axios.all([r1,r2]).then(this.$axios.spread(r1,r2) => {
//兩個(gè)請求的結(jié)果在r1和r2中
})
6.使用自定義配置創(chuàng)建一個(gè)axios實(shí)例
var instance = axios.create({
baseURL:'127.0.0.1:3000',
timeout:1000 //請求超時(shí)1秒,
header:{'xxxxxxxxxxxx'} //請求頭配置
})
7.axios 發(fā)送get請求響應(yīng)數(shù)據(jù)前的修改
this.$axios.get('index',{
params:{id:1},
transfromResponse:[function(data) {
//console.log(data) 顯示的時(shí)json字符串格式的數(shù)據(jù)
JSON.parse(data) //將json數(shù)據(jù)序列化
data.msg = 'xxx' //修改數(shù)據(jù)
}]
}).then(res => {
console.log(res.data.msg) //顯示xxx
})
8.axios 發(fā)送post,put,patch請求發(fā)送數(shù)據(jù)前的修改
transformRequest 可以在向服務(wù)器發(fā)送請求之前 修改請求數(shù)據(jù)
后面的數(shù)組函數(shù)必須返回一個(gè)字符串或ArrayBuffer或Stream
this.$axios.post('login','a=xxx',{
transformRequest[function() {
return 'a=123' //這樣發(fā)送請求的數(shù)據(jù)就被修改了
//如果是對象數(shù)據(jù)的話,需要使用qs模塊進(jìn)行轉(zhuǎn)化
}]
}).then(res => {
//請求的數(shù)據(jù)存儲在res.data 中
})