日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

vue http.js

 丶平上 2018-08-08
import axios from 'axios'
import qs from 'qs'
import appData from './AppData'

var Http = {
defaultTimeout: 20000
}

Http.ErrorCode = {
NOT_NETWORK: -1, // 無網(wǎng)絡(luò),服務(wù)器無響應(yīng)
SERVICE_ERROR: -2, // 服務(wù)器錯(cuò)誤,請求錯(cuò)誤返回碼不為:200
PARSER_ERROR: -3, // 接口解析錯(cuò)誤
API_ERROR: -4, // 接口錯(cuò)誤status不為:0
REQUEST_ERROR: -5 // 請求之前錯(cuò)誤,
}

/**
*
* @param error error對象
* @param errorCode Http.ErrorCode
* @param request 請求對象
* @param response 響應(yīng)對象
* @returns {*}
* @constructor
*/
var creatHttpError = function (error, errorCode, request, response) {
if (!error) {
error = new Error()
}
error.errorCode = errorCode

if (request) {
error.request = request
}

if (response) {
error.response = response
}
return error
}

// 創(chuàng)建新的實(shí)例
var axiosNew = axios.create({ timeout: Http.defaultTimeout})
axiosNew.defaults.withCredentials = true

// POST傳參序列化(添加請求攔截器)
axiosNew.interceptors.request.use(
config => {
config.headers = {
// 'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
// 在發(fā)送請求之前做某件事
if (
config.method === 'post' ||
config.method === 'put' ||
config.method === 'delete'
) {
// 序列化
config.data = qs.stringify(config.data)
}
return config
},
error => {
let httpError = creatHttpError(error, Http.ErrorCode.REQUEST_ERROR, error.request, error.response)
return Promise.reject(httpError)
}
)

// 返回狀態(tài)判斷(添加響應(yīng)攔截器)
axiosNew.interceptors.response.use(
res => {
// 對響應(yīng)數(shù)據(jù)做些事
if (res.status == 200) {
if (res.data.state == 0) {
return res.data.data
} else {
// 接口state不為0

let httpError = creatHttpError(new Error('Api Error:' + res.data.data), Http.ErrorCode.API_ERROR, res.request, res)
return Promise.reject(httpError)
}
} else {
let httpError = creatHttpError(new Error('Server Error:' + res.status), Http.ErrorCode.SERVICE_ERROR, res.request, res)
return Promise.reject(httpError)
}
},
error => {
if (error.response) {
// 服務(wù)器有響應(yīng)
let httpError = creatHttpError(error, Http.ErrorCode.SERVICE_ERROR, error.request, error.response)
return Promise.reject(httpError)
} else {
// 無網(wǎng)絡(luò)或者服務(wù)器無響應(yīng)
let httpError = creatHttpError(error, Http.ErrorCode.NOT_NETWORK, error.request, error.response)
return Promise.reject(httpError)
}
}
)

/**
this.$http.post(url,data).then((data)=>{

}).catch((error)=>{

})

*
* @param url
* @param data
* @returns {Promise<any>}
*/
Http.post = function (url, data) {
return new Promise(function (resolve, reject) {
axiosNew.post(url, data).then(function (data) {
resolve(data)
}).catch(function (error) {
console.log('http-post-error:', error)
reject(error)
})
})
}

/**
this.$http.get(url,data).then((data)=>{

}).catch((error)=>{

})

*
* @param url
* @param data
* @returns {Promise<any>}
*/
Http.get = function (url, params) {
return new Promise(function (resolve, reject) {
axiosNew.get(url, {params: params}).then(function (data) {
resolve(data)
}).catch(function (error) {
console.log('http-get-error:', error)
reject(error)
})
})
}

/**
* 延時(shí)請求,等下次頁面加載再去請求,跳轉(zhuǎn)頁面上報(bào)功能一般用這個(gè)
* @param url
* @param data
*/
Http.postWhenFreeTime = function (url, data) {
// let requests = storage.getLocal('postWhenFreeTime',[])
// requests.push({url:url,data:data})
// storage.setLocal('postWhenFreeTime',requests)

let requests = appData.postWhenFreeTime
requests.push({url: url, data: data})
}

/**
* 激活上報(bào)
*/
Http.startPost = function () {
// setTimeout(function () {
// let requests = storage.getLocal('postWhenFreeTime',[])
// if(requests.length>0){
// let request = requests.shift()
// storage.setLocal('postWhenFreeTime',requests)
// Http.post(request.url,request.data).finally(function () {
// Http.startPost()
// })
// }
// },1000)

setTimeout(function () {
let requests = appData.postWhenFreeTime
if (requests.length > 0) {
let request = requests.shift()
Http.post(request.url, request.data).finally(function () {
Http.startPost()
})
}
}, 1000)
}

module.exports = Http

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多