import axios from "axios"; let baseUrl = "/api"; // 基础接口请求信息 const service = axios.create({ validateStatus(status) { return status >= 200 && status <= 504; // 合法状态码 }, baseURL: baseUrl, // 基础请求路径 timeout: 30000, // 请求超时 }); // 重复尝试此时 service.defaults.retry = 3; // 重试延时 service.defaults.retryDelay = 15000; // 开启重试 service.defaults.shouldRetry = true; // 请求拦截 service.interceptors.request.use( (config) => { config.headers["Content-Type"] = "application/json;charset=UTF-8"; config.headers["Accept-Language"] = "zh-CN"; // 如果需要可以开启token,token是全局数据来自store // config.headers["Authorization"] = store.state.user.token; if (config.method === "post") { if (!config.data) { config.data = {}; } } return config; }, (error) => { const { response: { status, statusText }, } = error; throw new Error(`状态码:${status},信息:${statusText},位置:request`); } ); // response 拦截器 service.interceptors.response.use( (response) => { return new Promise((resolve, reject) => { if (response.status !== 200) { // 请求失败 reject(response); } else { resolve(response.data); } }).catch((res) => { throw new Error(`请求失败:${res}! 位置:request.js`); }); }, (err) => { // 失败 let message = "请求异常,请检测网络!"; if (err.response) { message = err.response.data.message; } throw new Error(message); } ); export default service;