request.js 1.65 KB
// http.js

// import axios from "axios";
import axios from 'axios/dist/axios'
import { getToken } from "./local-store";
import { ElMessage } from "element-plus";

import { useStorage } from "@vueuse/core/index";
const language = useStorage("language", 0);

const baseURL = "https://radv4.gitliuyi.top/ticket"; //"http://book.xiaojinyu.games"; // 这里填入你的基础 API URL
const timeout = 15000; // 请求超时时间

const http = axios.create({
  baseURL,
  timeout,
  headers: {
    "Content-Type": "application/json",
    Language: 'zh-cn'
  },
});

// 请求拦截器
http.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    if (language.value == 1) config.headers.Language = "en-us";
    const TOKEN = getToken();
    if (TOKEN) config.headers.Authorization = TOKEN;
    if (config.method == "get") config.params = config.data;
    // console.log("config", config);
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  (response) => {
    // 判断是否有异常
    let error = null; // 若无异常此值为null
    if (response.status !== 200) {
      error = Error(`Request failed with statuCode ${response.status}`);
    }

    if (response.data.code != 200) {
      ElMessage({ type: "error", message: response.data.msg });
      return Promise.reject(response.data);
    }

    return response.data;
  },
  (error) => {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

// 封装请求函数
const request = (method, url, data = null) => {
  return http({
    method,
    url,
    data,
  });
};

export default request;