赞
踩
前期回顾
目录
全局封装一次!
项目中切换路由显示loading,
发起axios显示loading,
每个页面显示返回顶部
极简
如果根据租户id,一个项目适应不同客户需要更多的环境变量
在根目录新建三个文件
.env.development
NODE_ENV='development'
.env.production
NODE_ENV='production'
.env.staging
NODE_ENV='production'
完成!
在src下新建newwork文件夹 并在里面新建4个文件
解释:
正文:
一 :配置跨域
二: 网址配好后写 service.ts 创建axiso实例
- import axios, {
- AxiosInstance,
- AxiosRequestConfig,
- CancelTokenSource,
- } from 'axios';
- // 导入 element-plus 中的消息和弹框组件
- import { ElMessage, ElMessageBox } from 'element-plus';
- import { Session } from '/@/utils/storage';
-
- // 取消请求的标记
- let cancelToken: CancelTokenSource | null = null;
-
- // 创建 Axios 实例
- const service: AxiosInstance = axios.create({
- baseURL: import.meta.env.VITE_API_URL, // 设置基础 URL
- timeout: 1000, // 设置超时时间
- headers: { 'Content-Type': 'application/json' }, // 设置请求头
- });
-
- // 请求拦截器
- service.interceptors.request.use(
- (config: AxiosRequestConfig) => {
- // 在发送请求之前做些什么?
- const token = Session.get('token');
- if (token) config.headers!['token'] = token; // 在请求头中添加 token
-
- // 如果存在上一次的请求,则取消它
- if (cancelToken) cancelToken.cancel('取消请求');
- // 如果存在上一次的请求,则取消它
- cancelToken = axios.CancelToken.source();
- config.cancelToken = cancelToken.token; // 设置取消请求的 token
-
- return config;
- },
- (error) => {
- // 对请求错误做些什么?
- return Promise.reject(error);
- }
- );
-
- // 响应拦截器
- service.interceptors.response.use(
- (response) => {
- // 对响应成功数据做点什么?
- const res = response.data;
- if (res.code && res.code !== 200) {
- // 处理一些常见的错误情况
- if (res.code === 401 || res.code === 4001) {
- // 退出登录并跳转到登录页
- Session.clear();
- window.location.href = '/home';
- ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
- .then(() => {})
- .catch(() => {});
- }
- return Promise.reject(response);
- } else {
- return response.data;
- }
- },
- (error) => {
- // 对响应错误数据做点什么?
- 推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。