import axios from 'axios'
|
import { ElMessage } from 'element-plus'
|
|
// 创建axios实例
|
const request = axios.create({
|
baseURL: 'http://localhost:9291',
|
timeout: 30000,
|
headers: {
|
'Content-Type': 'application/json;charset=UTF-8'
|
}
|
})
|
|
// 请求拦截器
|
request.interceptors.request.use(
|
config => {
|
// 可以在这里添加token等认证信息
|
// const token = localStorage.getItem('token')
|
// if (token) {
|
// config.headers['Authorization'] = `Bearer ${token}`
|
// }
|
return config
|
},
|
error => {
|
console.error('请求错误:', error)
|
return Promise.reject(error)
|
}
|
)
|
|
// 响应拦截器
|
request.interceptors.response.use(
|
response => {
|
const res = response.data
|
|
// 根据实际后端返回格式调整
|
// 假设后端返回格式为 { code: 200, data: {}, message: '' }
|
if (res.code !== undefined && res.code !== 200) {
|
|
}
|
|
return res
|
},
|
error => {
|
console.error('响应错误:', error)
|
|
let message = '网络错误'
|
if (error.response) {
|
switch (error.response.status) {
|
case 400:
|
message = '请求错误'
|
break
|
case 401:
|
message = '未授权,请重新登录'
|
break
|
case 403:
|
message = '拒绝访问'
|
break
|
case 404:
|
message = '请求地址不存在'
|
break
|
case 500:
|
message = '服务器内部错误'
|
break
|
default:
|
message = error.response.data?.message || '请求失败'
|
}
|
} else if (error.request) {
|
message = '网络连接失败'
|
}
|
|
ElMessage.error(message)
|
return Promise.reject(error)
|
}
|
)
|
|
// 导出常用的请求方法
|
export const http = {
|
get(url, params, config = {}) {
|
return request.get(url, { params, ...config })
|
},
|
|
post(url, data, config = {}) {
|
return request.post(url, data, config)
|
},
|
|
put(url, data, config = {}) {
|
return request.put(url, data, config)
|
},
|
|
delete(url, params, config = {}) {
|
return request.delete(url, { params, ...config })
|
},
|
|
// 用于文件上传
|
upload(url, file, config = {}) {
|
const formData = new FormData()
|
formData.append('file', file)
|
return request.post(url, formData, {
|
headers: {
|
'Content-Type': 'multipart/form-data'
|
},
|
...config
|
})
|
}
|
}
|
|
export default request
|