1.
import axios from "axios"
import config from "./../config"
import { ElMessage } from "element-plus"
import router from "../router"
const TOKEN_INVALID = "token已失效,请重新登录"
const NETWORK_ERROR = "网络异常,请稍后重试"
//创建axios实例
const service = axios.create({
baseURL: config.baseApi,
timeout: 8000
})
//请求拦截
service.interceptors.request.use(req => {
const headers = req.headers
if (!headers.Authorization) headers.Authorization = "Bear Bzw"
return req
})
//请求拦截
service.interceptors.request.use(req => {
//在请求头添加token
const headers = req.headers
if (!headers.Authorization) headers.Authorization = "Bear Bzw"
return req
})
//响应拦截
service.interceptors.response.use(res => {
const { data, code, msg } = res.data
//成功返回data
if (code === 200) {
return data
//登录失效返回首页并且提示
} else if (code === 40001) {
ElMessage.error(TOKEN_INVALID)
setTimeout(() => {
router.push("/login")
}, 15000)
return Promise.reject(TOKEN_INVALID)
} else {
//报错则提示
ElMessage.error(msg || NETWORK_ERROR)
return Promise.reject(msg || NETWORK_ERROR)
}
})
function request(options) {
options.method = options.method || "get"
if (options.method.toLowerCase() === "get") {
options.params = options.data
}
if (config.env === "prod") {
service.defaults.baseURL = config.baseApi
} else {
service.defaults.baseURL = config.mock ? config.mockApi : config.baseApi
}
return service(options)
}
//创建请求方式,直接进行调用
["get", "post", "delete", "put", "patch"].forEach(item => {
request[item] = (url, data, options) => {
return request({
url, data, method: item, ...options
})
}
})
export default request