songshankun
2023-09-28 7874262b15ca8d2495012ed5f934332dbeeadf29
src/api/index.js
@@ -1,71 +1,19 @@
import ax from "axios"
import { IS_PRODUCTION } from "@/common/config"
// import { wsCache } from "@/common/untils/wsCache"
import { responseHandler, errorResponseHandler } from "./responseHandler"
import { assign, map } from "lodash"
import faker from "faker/locale/zh_CN"
import { service, request } from "./service"
import * as tools from "./tools"
const JsonText = window.getServerJson
const axios = ax.create({
  baseURL: IS_PRODUCTION ? JsonText.managePath : "", // url = base url + request url
  withCredentials: true,
  headers: {
    "X-Requested-With": "XMLHttpRequest", // 给后台区分异步请求
    "Content-Type": "application/json;charset=UTF-8"
  },
  timeout: 300000 // request timeout
})
// 添加一个请求拦截器
axios.interceptors.request.use(
  (request) => {
    if (request.data instanceof FormData) {
      // 不处理
    } else if (request.data) {
      request.data["domain"] = JsonText.systemCode
    } else {
      request.data = { domain: JsonText.systemCode }
    }
const files = require.context("./modules", true, /\.api\.js$/)
const generators = files.keys().map((key) => files(key).default)
    //用户登录标记
    // const token = wsCache.get('token')
    // request.headers['token'] = token
    return request
  },
  (error) => {
    return Promise.reject(error)
  }
export default assign(
  {},
  ...map(generators, (generator) =>
    generator({
      service,
      request,
      faker,
      tools
    })
  )
)
// 添加一个响应拦截器
axios.interceptors.response.use(
  (response) => {
    // 处理响应请求池
    if (response.data.status.toString() === "200" && response.data.success === true) {
      return response
    } else {
      responseHandler(response)
      return Promise.reject(response.data)
    }
  },
  (error) => {
    errorResponseHandler(error)
    return Promise.reject(error)
  }
)
// 通用方法
export const POST = (url, params, config = {}) => {
  return axios.post(`${url}`, params, config).then((res) => res.data)
}
export const GET = (url, params, config = {}) => {
  return axios.get(`${url}`, { params: params, ...config }).then((res) => res.data)
}
export const PUT = (url, params, config = {}) => {
  return axios.put(`${url}`, params, config).then((res) => res.data)
}
export const DELETE = (url, params, config = {}) => {
  return axios.delete(`${url}`, { params: params }, config).then((res) => res.data)
}
export const PATCH = (url, params, config = {}) => {
  return axios.patch(`${url}`, params, config).then((res) => res.data)
}
export const Axios = axios