// 导入axios
import axios from 'axios'
import { getToken } from '@/utils/auth'
// 基地址
const service = axios.create({
baseURL: import.meta.env.VITE_APP_WEB_URL,
// 5秒超时
timeout: 10000
})
// 请求拦截
// 添加一个service的请求拦截器
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
service.interceptors.request.use(
async config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
config.headers = { 'X-Requested-With': 'XMLHttpRequest' }
if (getToken() && !isToken) {
config.headers['token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
return config
}, error => {
console.log(error)
Promise.reject(error)
}
)
// 响应拦截
service.interceptors.response.use(
res => {
// axios默认加了一层data
// 这个res包括这个请求响应回来的所有信息
// 所有的接口请求都会回到这里
// 获取到本次请求得到的数据
const data = res.data
// 会帮所有的请求打印
// console.log(data);
// 判断本次请求是否成功
if (data.code === 200 || data.code === 0) {
// 如果响应成功,则正常给他返回数据
return data
} else {
// 证明失败,我们需要让外面的catch被调用
// 要让catch被调用,就要手动抛出一个错误,并把服务器返回的消息抛回去
// Message.warning(data.message || data.msg)
console.log(data)
return Promise.reject(data.message)
}
},
async error => {
// token失效的被动处理
console.log(error)
if (error.response.data.code === 401) {
console.log('失败')
} else {
return Promise.reject(error)
}
}
// error => {
// return Promise.reject(error)
// }
)
// 暴露副本
export default service
// 请求
import request from '@/utils/request'
// 登录方法
export function login(data: Object) {
return request({
url: '/admin/login/login_submit',
headers: {
isToken: false
},
method: 'post',
data: data
})
}