1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import axios from 'axios'
- import { ElMessage } from 'element-plus'
- import { getSessionVar, clearSessionVar } from "@/utils/session";
- import { useRouter } from "vue-router"
- const router = useRouter();
- const NETWORK_ERROR = '网络错误,请稍后重试!'
- // 创建 axios 实例
- const http = axios.create({
- baseURL: '', // 设置基本 URL
- timeout: 60000, // 设置请求超时时间
- });
- // 请求拦截器
- http.interceptors.request.use(
- (config) => {
- // 在发送请求之前做些什么
- // console.log('请求被拦截:', config);
- // 例如:添加 token 到请求头
- // config.headers['Authorization'] = 'Bearer your_token_here';
- if (getSessionVar('session_id') != null && getSessionVar('username') != null) {
- config.headers.Authorization = 'Beaver ' + getSessionVar('username') + ' ' + getSessionVar('session_id');
- }
- return config; // 必须返回 config,否则请求不会被发送
- },
- (error) => {
- // 请求错误时做些什么
- ElMessage({
- message: "请求错误:" + error,
- type: "warning"
- })
- console.log('请求错误:', error);
- return Promise.reject(error); // 必须返回一个 rejected promise 否则请求会卡住
- }
- );
- // 响应拦截器
- http.interceptors.response.use(
- (response) => {
- // 对响应数据做些什么,可以在此处理响应数据
- const { data, code, message } = response.data
- if (code === 200) {
- return data || response.data
- } else {
- ElMessage({
- message: message,
- type: "error"
- })
- return Promise.reject(message)
- }
- // return response.data; // 这里直接返回 response.data,方便后续使用
- },
- (error) => {
- // 处理未登录
- if (error.response.status == 401) {
- clearSessionVar()
- router.push("/login")
- return null
- }
- // 响应错误时做些什么,根据错误类型做相应处理
- if (error.response) {
- // 请求已发出,服务器响应了状态码,但状态码超出了 2xx 的范围
- ElMessage({
- message: NETWORK_ERROR,
- type: "warning",
- plain: true,
- })
- } else if (error.request) {
- // 请求已经发出,但没有收到响应
- ElMessage({
- message: "没有收到响应",
- type: "warning"
- })
- } else if (error.code === 'ECONNABORTED') {
- ElMessage({
- message: "请求超时,请稍后重试!",
- type: "warning"
- })
- }
- else {
- // 其他错误
- ElMessage({
- message: error.message,
- type: "warning"
- })
- }
- console.log('请求错误:', error.message);
- return Promise.reject(error); // 继续抛出错误
- }
- );
- export default http;
|