'use strict'
import axios from 'axios'
import qs from 'qs'
import Vue from 'vue'
//内外网打包
var x
if (!window.location.origin) {
x = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '')
} else {
x = window.location.origin
}
Vue.prototype.baseURL = x
const request = axios.create({
baseURL: x + '加入代理路径', // 请求地址 url = base url + request url
timeout: 50000 // 请求超时时间
})
request.defaults.withCredentials = true
request.interceptors.request.use(
config => {
return config
},
error => {
return Promise.reject(error)
}
)
request.interceptors.response.use(
response => {
return response
},
error => {
return Promise.resolve(error.response)
}
)
function checkStatus(response) {
// loading
// 如果http状态码正常,则直接返回数据
if (response && (response.status === 200 || response.status === 304)) {
return response.data
// 如果不需要除了data之外的数据,可以直接 return response.data
} else {
const err = {
message: '',
status: (response && response.status) || ''
}
switch (err.status) {
case 400:
err.message = '请求参数错误'
break
case 401:
err.message = '未授权,请登录'
break
case 403:
err.message = '拒绝访问,请登录'
break
case 404:
err.message = `请求地址出错:`
break
case 408:
err.message = '请求超时'
break
case 500:
err.message = '服务器内部错误'
break
case 501:
err.message = '服务未实现'
break
case 502:
err.message = '网关错误'
break
case 503:
err.message = '服务不可用'
break
case 504:
err.message = '网关超时'
break
case 505:
err.message = 'HTTP版本不受支持'
break
default:
err.message = '网络错误'
break
}
// 异常状态下,把错误信息返回去
err.message = `${(response && response.config.url) || '' + err.message}`
return err
}
}
function checkCode(res) {
return res
}
export default {
post(url, data, type, timeout = 50000) {
let ContentType = 'application/x-www-form-urlencoded;charset=UTF-8'
let postData = ''
if (type === 'JSON') {
ContentType = 'application/json'
postData = data
} else {
postData = qs.stringify(data)
}
return request({
method: 'post',
url,
data: postData,
timeout: timeout,
headers: {
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': ContentType,
appScope: 6,
}
})
.then(response => {
return checkStatus(response)
})
.then(res => {
return checkCode(res)
})
},
put(url, data, type, timeout = 50000) {
let ContentType = 'application/x-www-form-urlencoded;charset=UTF-8'
let postData = ''
if (type === 'JSON') {
ContentType = 'application/json'
postData = data
} else {
postData = qs.stringify(data)
}
return request({
method: 'put',
url,
data: postData,
timeout: timeout,
headers: {
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': ContentType,
appScope: 6,
}
})
.then(response => {
return checkStatus(response)
})
.then(res => {
return checkCode(res)
})
},
get(url, params, time) {
return request({
method: 'get',
url,
params, // get 请求时带的参数
timeout: Number(time) ? time : '50000',
headers: {
'X-Requested-With': 'XMLHttpRequest'
}
})
.then(response => {
return checkStatus(response)
})
.then(res => {
return checkCode(res)
})
},
upload(url, data) {
return request({
headers: {
'Content-Type': 'multipart/form-data'
},
method: 'post',
url: url,
data: data,
timeout: 50000
})
}
}
11-15