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

173 lines
4.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from 'axios'
import { storageKey } from '@/utils/constants'
import store from '@/store'
const CancelToken = axios.CancelToken
axios.interceptors.request.use(config => {
const token = localStorage.getItem(storageKey.token)
// 添加http请求终止方法
const arr = []
const cancelToken = new CancelToken(function executor (c) {
arr.push(c)
store.commit('setHttpCancel', arr)
})
config.cancelToken = cancelToken
if (token) {
config.headers['Cn-Authorization'] = token // 请求头token
}
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) {
localStorage.removeItem(storageKey.token)
window.location.href = '/'
} else if (response.status === 200) {
if (accountErrorCode.indexOf(response.data.code) !== -1) {
localStorage.removeItem(storageKey.token)
window.location.href = '/'
}
}
return response
},
error => {
return Promise.reject(error)
}
)
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)
}
})
})
}
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)
} else if (err.message) {
resolve(err.message)
}
})
})
}
export function patch (url, params, headers) {
return new Promise((resolve) => {
axios.patch(url, params, { headers: headers }).then(response => {
resolve(response.data, response)
}).catch(err => {
if (err.response) {
resolve(err.response.data)
console.error(err)
} 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)
}
})
})
}