http.js 文件件
import axios from 'axios'
import qs from 'qs'
import store from '../store'
import md5 from 'js-md5'
axios.interceptors.request.use(
(config) => {
if (config.method.toLocaleLowerCase() === 'post') { // 是否是post请求
config.data = qs.stringify(config.data)
config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
} else {
config.headers['Content-Type'] = 'application/json'
}
if (localStorage.getItem('device')) {
try {
config.headers['Device-Id'] = md5(JSON.parse(localStorage.getItem('device')).uuid)
} catch (e) {
console.log(e)
}
}
if (localStorage.getItem('os')) { // 获取设备信息
if (localStorage.getItem('runtime')) {
if (localStorage.getItem('device')) {
config.headers['Device-Features'] = JSON.stringify({
appVersion: JSON.parse(localStorage.getItem('runtime')).version,
appName: JSON.parse(localStorage.getItem('os')).name,
imei: JSON.parse(localStorage.getItem('device')).imei,
model: JSON.parse(localStorage.getItem('device')).model,
uuid: JSON.parse(localStorage.getItem('device')).uuid,
imsi: JSON.parse(localStorage.getItem('device')).imsi
})
}
}
}
// if (store.state.token !== '') {
// config.headers['User-Token'] = store.state.token
// }
if (store.state.token !== '') {
config.headers['Access-Token'] = store.state.token
}
return Promise.resolve(config)
},
(error) => {
if (window.plus) {
window.plus.nativeUI.closeWaiting()
}
return Promise.reject(error)
}
)
axios.interceptors.response.use( // 响应将结果返回
(res) => {
if (window.plus) {
window.plus.nativeUI.closeWaiting()
}
return Promise.resolve(res)
},
(error) => {
// Do something with res error
if (window.plus) {
window.plus.nativeUI.closeWaiting()
}
return Promise.reject(error)
}
)
const fetch = (methods, sendUrl, data = {}) => {
if (window.plus) {
window.plus.nativeUI.showWaiting()
setTimeout(() => {
window.plus.nativeUI.closeWaiting()
}, 5000)
}
const httpDefaultOpts = {
// http默认配置
method: methods,
url: sendUrl,
timeout: 10000
}
if (methods.toLocaleLowerCase() === 'get') {
httpDefaultOpts.params = data
} else {
httpDefaultOpts.data = data
}
const promise = new Promise((resolve, reject) => {
axios(httpDefaultOpts)
.then((res) => {
resolve(res)
}).catch((err) => {
reject(err)
})
})
return promise
}
export default fetch
保存设备信息//一般在index.html里面
if (plus.device.uuid) {
localStorage.setItem('device', JSON.stringify(plus.device))
} else {
localStorage.setItem('device', JSON.stringify({ imei: " ", imsi: [], model: "iPhoneSimulator", vendor: "Apple", uuid: uuid() }))
}
if (plus.os) {
localStorage.setItem('os', JSON.stringify(plus.os))
}
if (plus.runtime) {
localStorage.setItem('runtime', JSON.stringify(plus.runtime))
}
function uuid() {
// 生成唯一uuid
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
}
axios封装
最新推荐文章于 2024-07-22 15:40:42 发布