UNPKG

alloy-request

Version:

alloy-request 基于`axios`和`ahooks的useRequest`封装的 react 请求库

120 lines (119 loc) 2.31 kB
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 };