import axios from "axios";
import { useTokenStore } from '@/stores/token'
const service = axios.create({
baseURL: '/api',
timeout: 5000
});
// axios请求拦截器
service.interceptors.request.use(
config => {
const tokenStore = useTokenStore()
if(tokenStore.token){
config.headers['token'] = tokenStore.token;
}
return config;
},
error => {
console.log(error)
return Promise.reject(error)
}
)
export default service
- 这段代码是一个用于创建Axios实例的模块,其中包括了请求拦截器的使用。
- 首先,通过 import axios from "axios"语句引入了Axios库。
- 然后,通过 import { useTokenStore } from '@/stores/token'语句引入了 useTokenStore函数,用于获取状态管理里的token值。
- 接下来,使用 axios.create()方法创建了一个名为 service的Axios实例。在创建实例时,传入了一些配置项,如 baseURL表示请求的基础URL,timeout表示请求超时时间。
- 最后,通过 service.interceptors.request.use()方法注册了一个请求拦截器。该拦截器的作用是在发送请求之前对请求进行处理。
- 在成功回调函数中,通过if(tokenStore.token)判断token值是否为空。如果不为空,则将token值设置在请求头的 token字段中,以便在发送请求时携带token。
- 在错误回调函数中,打印了错误信息并使用 Promise.reject()返回一个被拒绝的Promise,将错误传递给下一个错误处理函数。