This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/src/utils/http.js

158 lines
3.9 KiB
JavaScript
Raw Normal View History

2021-06-11 10:00:22 +08:00
import axios from 'axios'
import { storageKey } from '@/utils/constants'
2022-10-19 15:27:26 +08:00
import store from '@/store'
const CancelToken = axios.CancelToken
2021-06-11 10:00:22 +08:00
axios.interceptors.request.use(config => {
const token = localStorage.getItem(storageKey.token)
2022-10-19 15:27:26 +08:00
// 添加http请求终止方法
const arr = []
const cancelToken = new CancelToken(function executor (c) {
arr.push(c)
store.commit('setHttpCancel', arr)
})
config.cancelToken = cancelToken
2021-06-11 10:00:22 +08:00
if (token) {
2022-06-24 15:09:20 +08:00
config.headers['Cn-Authorization'] = token // 请求头token
2021-06-11 10:00:22 +08:00
}
return config
},
err => Promise.reject(err)
)
const accountErrorCode = [518003, 518004, 518005, 518006, 518007, 518008] // 账号锁定等
const licenceErrorCode = [711001]
// 若get请求的url中带问号则将url上的参数截取改为对象形式传参
axios.interceptors.request.use(
config => {
if (config.method === 'get') {
const url = config.url
const index = url.indexOf('?')
if (index > -1) {
const pre = url.substring(0, index)
const suf = url.substring(index + 1, url.length)
const paramsArr = suf.split('&')
const params = {}
paramsArr.forEach(p => {
const i = p.indexOf('=')
if (i > -1) {
params[p.substring(0, i)] = p.substring(i + 1, p.length)
} else {
params[p] = ''
}
})
config = { ...config, url: pre, params: params }
}
}
return config
}
)
axios.interceptors.response.use(
response => {
if (licenceErrorCode.indexOf(response.data.code) !== -1) {
2022-01-03 22:46:22 +08:00
localStorage.removeItem(storageKey.token)
2021-08-13 18:57:49 +08:00
window.location.href = '/'
2021-06-11 10:00:22 +08:00
} else if (response.status === 200) {
if (accountErrorCode.indexOf(response.data.code) !== -1) {
2022-01-03 22:46:22 +08:00
localStorage.removeItem(storageKey.token)
2021-06-11 10:00:22 +08:00
window.location.href = '/'
}
}
return response
},
error => {
return Promise.reject(error)
}
)
2021-11-11 23:28:52 +08:00
export function getForDebug (url, params) {
return new Promise((resolve) => {
axios.get(url, {
params: params
}).then(response => {
resolve(response)
}).catch(err => {
if (err.response) {
resolve(err.response)
} else if (err.message) {
resolve(err.message)
}
})
})
}
export function postForDebug (url, params, headers) {
return new Promise(resolve => {
axios.post(url, params, { headers: headers }).then(response => {
resolve(response, response)
}).catch(err => {
if (err.response) {
resolve(err.response)
} else if (err.message) {
resolve(err.message)
}
})
})
}
2021-06-11 10:00:22 +08:00
export function get (url, params) {
return new Promise((resolve) => {
axios.get(url, {
params: params
}).then(response => {
resolve(response.data)
}).catch(err => {
if (err.response) {
resolve(err.response.data)
} else if (err.message) {
resolve(err.message)
}
})
})
}
export function post (url, params, headers) {
return new Promise(resolve => {
axios.post(url, params, { headers: headers }).then(response => {
resolve(response.data, response)
}).catch(err => {
if (err.response) {
resolve(err.response.data)
} else if (err.message) {
resolve(err.message)
}
})
})
}
export function put (url, params, headers) {
return new Promise((resolve) => {
axios.put(url, params, { headers: headers }).then(response => {
resolve(response.data, response)
}).catch(err => {
if (err.response) {
resolve(err.response.data)
console.error(err)
2021-06-11 10:00:22 +08:00
} else if (err.message) {
resolve(err.message)
}
})
})
}
export function del (url, params) {
return new Promise((resolve) => {
axios.delete(url, params).then(response => {
resolve(response.data, response)
}).catch(err => {
if (err.response) {
resolve(err.response.data)
} else if (err.message) {
resolve(err.message)
}
})
})
}