alloy-request
Version:
alloy-request 基于`axios`和`ahooks的useRequest`封装的 react 请求库
120 lines (119 loc) • 2.31 kB
JavaScript
import y from "axios";
import { useRequest as T } from "ahooks";
const U = {
headers: {
"Content-Type": "application/json"
},
timeout: 3e4
// 基础请求全局超时时间
}, s = y.create(U), c = {
getUrl: (n) => n
};
function x({ request: n, response: u, error: t, getUrl: r }) {
r && (c.getUrl = r), s.interceptors.request.use(
(e) => n ? n(e) : e,
(e) => t ? t(e) : Promise.reject(e)
), s.interceptors.response.use(
(e) => e.status === 200 ? u ? u(e) : e.data : Promise.reject(e),
(e) => t ? t(e) : Promise.reject(e)
);
}
function h(n, u, t) {
var r;
try {
return s({
...t,
method: "POST",
url: (r = c.getUrl) == null ? void 0 : r.call(c, n),
data: u
});
} catch (e) {
return console.log(e), Promise.reject(e);
}
}
function d(n, u, t) {
var r;
try {
const { parameterType: e = "data", ...i } = t || {};
return s({
...i,
method: "GET",
url: (r = c.getUrl) == null ? void 0 : r.call(c, n),
[e]: u
});
} catch (e) {
return Promise.reject(e);
}
}
function m(n, u, t) {
var r;
try {
return s({
...t,
method: "PUT",
url: (r = c.getUrl) == null ? void 0 : r.call(c, n),
data: u
});
} catch (e) {
return Promise.reject(e);
}
}
function f(n, u, t) {
var r;
try {
return s({
...t,
method: "PATCH",
url: (r = c.getUrl) == null ? void 0 : r.call(c, n),
data: u
});
} catch (e) {
return Promise.reject(e);
}
}
function P(n, u, t) {
var r;
try {
return s({
...t,
method: "DELETE",
url: (r = c.getUrl) == null ? void 0 : r.call(c, n),
data: u
});
} catch (e) {
return Promise.reject(e);
}
}
const o = {
get: d,
post: h,
put: m,
patch: f,
del: P
};
function E(n, u, t) {
return T(async (r) => {
var a;
const i = (u ?? (() => ({})))(r), { method: g = "post", payload: p, ...j } = i, l = (a = o[g]) == null ? void 0 : a.call(o, n, p, j);
return t != null && t.formatResult ? l.then(t.formatResult) : l;
}, t);
}
const R = {
initInstance: x,
post: h,
get: d,
put: m,
patch: f,
del: P,
useAxios: E
};
export {
R as default,
P as del,
d as get,
x as initInstance,
f as patch,
h as post,
m as put,
E as useAxios
};