import axios from 'axios'; export default function (options) { //配置每次发送请求都从localStorage中获取名字叫token的数据, //添加到请求头部的Authorization属性中 const token = localStorage.getItem('token'); //Object.assign用于合并对象的数据 options.data.token = token; // options.headers = Object.assign( // { token: token }, // options.headers || {} // ); //axios() 返回一个promise对象,用于异步请求 //options是一个对象,其中包含了许多用于配置请求的参数, //例如请求的url、请求方法(GET、POST等)、请求头等 return axios(options) .then(({ status, data, statusText }) => { //该函数在请求成功并返回数据时被调用 //status:HTTP状态码,例如200表示请求成功。 //data:服务器返回的数据。 // statusText:HTTP状态文本,例如"OK"表示请求成功。 // console.log(data); if (status == 200) { return data; } else { throw new e(statusText); } }) .catch(e=>{ // 检查是否是因为token过期导致的401错误 if (e.response && e.response.status === 401) { // 清除localStorage中的token localStorage.removeItem('token'); // // 执行重新登录的逻辑,例如跳转到登录页面 window.location.href = '/login'; // 可以在这里返回一个特定的值或者对象,以便调用者知道需要重新登录 return { needsLogin: true }; } else { // 其他类型的错误,直接抛出 return Promise.reject(e); } }); }