my-vue-3.2/src/api/request.js

48 lines
1.1 KiB
JavaScript

// 导入 axios
import axios from 'axios'
// 引入 ElMessage 消息提示
import { ElMessage } from 'element-plus'
// axios 基础配置
const service = axios.create({
// 基础路径
baseURL: process.env.VUE_APP_BASE_API,
// 超时时间
timeout: 5000
})
// 响应拦截器
service.interceptors.response.use(
// 请求响应时
(response) => {
const { data, meta } = response.data
if (meta.status === 200 || meta.status === 201) {
return data
} else {
// meta.msg = '拦截器出错'
ElMessage.error(meta.msg)
return Promise.reject(new Error(meta.msg))
}
},
// 无响应时
(error) => {
// console.log(error.response)
error.response.data = '后端服务器无响应或者URL错误'
error.response && ElMessage.error(error.response.data)
return Promise.reject(new Error(error.response.data))
}
)
// 请求拦截器
service.interceptors.request.use(
(config) => {
config.headers.Authorization = localStorage.getItem('token')
return config
},
(error) => {
return Promise.reject(new Error(error))
}
)
// 导出以供外界使用
export default service