vue3在请求拦截里改变baseURL
时间: 2024-11-09 13:26:01 浏览: 13
Vue实现数据请求拦截
Vue3中的请求拦截通常发生在axios库或者自定义的http模块中,目的是对所有网络请求进行统一的处理,如添加全局的headers、错误处理、状态码检查等。如果你想在请求拦截阶段动态更改`baseUrl`,可以这样做:
首先,安装axios库,如果你还没有安装,可以在main.js或者你想配置的地方使用`npm install axios`。
然后,在Vue实例的setup钩子或者App.vue文件中,创建一个axios实例并设置拦截器:
```javascript
import { createApp } from 'vue';
import axios from 'axios';
// 创建axios实例
const service = axios.create({
baseURL: process.env.BASE_API || '', // 这里的 baseUrl 是默认值,后续会根据情况动态修改
timeout: 5000,
headers: {
'Content-Type': 'application/json',
},
});
// 添加全局请求拦截
service.interceptors.request.use((config) => {
// 在这里你可以根据需要动态修改baseUrl,例如:
if (/* 条件判断 */) {
config.baseURL = '新的_base_url';
}
return config;
}, (error) => {
// 请求错误处理
console.error('Request failed with error', error);
return Promise.reject(error);
});
// 在app实例中使用这个服务
createApp(App).use({ provide: 'axios', useValue: service }).mount('#app');
```
在这个例子中,当满足某个条件时(比如登录状态变化),可以根据需要更新`config.baseURL`。
阅读全文