axios-easyconf
Version:
基于axios的轻量级二次封装库,支持自动协议匹配、简化拦截器配置、自动挂载 WebSocket 地址。
26 lines (25 loc) • 1.2 kB
JavaScript
import l from "axios";
export * from "axios";
class p {
static create(t) {
const o = l.create(t);
let e = o.defaults.baseURL;
const s = typeof window < "u" ? window.location.protocol : void 0;
if (e && t?.autoProtocol && s && typeof e == "string")
try {
e = e.replace(/^https?:/, s), o.defaults.baseURL = e;
} catch (r) {
console.error("替换 baseURL 协议时出错:", r);
}
else
t?.autoProtocol && (s ? typeof e != "string" && console.warn("baseURL 不是字符串,跳过自动替换协议") : console.warn("无法获取 window.location.protocol,跳过自动替换协议"));
e ? (o.WS_URL = e.replace(/^http/, "ws"), o.BASE_URL = e) : typeof window < "u" && window.location?.origin && (e = window.location.origin, o.WS_URL = e.replace(/^http/, "ws"), o.BASE_URL = e);
const n = t.beforeRequest?.[0] || ((r) => r), a = t.beforeRequest?.[1] || ((r) => Promise.reject(r)), c = t.beforeResponse?.[0] || ((r) => r), i = t.beforeResponse?.[1] || ((r) => Promise.reject(r));
return o.interceptors.request.use(n, a), o.interceptors.response.use(c, i), o;
}
}
const w = p.create;
export {
w as createRequest,
p as default
};