将URL中的参数名替换成对应的值
const getApi = (url, params) => {
if (!params || typeof params !== "object") return url;
const api = Object.keys(params)
.reduce((accUrl, key) => {
const keyReg = new RegExp(`:${key}\\??`);
return accUrl.replace(keyReg, params[key]);
}, url.trim())
.replace(/\/:([\w]*)\??/g, "");
return api;
};
请求中添加version和url
const getParams = ( url,param) => {
if (typeof param !== "object") return param;
return {
version: CURRENT_VERSION.version,
...param,
};
};
新增一些全通用方法
ApiFetch.get = (url, param, header) => {
const params = getParams(url, param);
let api = getApi(url, params);
if (params && typeof params === "object") {
const paramsArray = [];
Object.keys(params).forEach(key =>
paramsArray.push(`${key}=${params[key]}`)
);
if (api.search(/\?/) === -1) {
api += `?${paramsArray.join("&")}`;
} else {
api += `&${paramsArray.join("&")}`;
}
}
return doFetch(api, "GET", null, header);
};
ApiFetch.post = (url, param, header) => {
const params = getParams(url, param);
const api = getApi(url, params);
const body = typeof params === "object" ? JSON.stringify(params) : params;
return doFetch(api, "POST", body, header);
};
ApiFetch.upload = (url, param, header = {}) => {
const params = getParams(url, param);
const api = getApi(url, params);
return doFetch(api, "POST", params, header);
};
ApiFetch.put = (url, param, header) => {
const params = getParams(url, param);
const api = getApi(url, params);
const body = typeof params === "object" ? JSON.stringify(params) : params;
return doFetch(api, "PUT", body, header);
};
ApiFetch.delete = (url, param, header) => {
const params = getParams(url, param);
const api = getApi(url, params);
const body = typeof params === "object" ? JSON.stringify(params) : params;
return doFetch(api, "DELETE", body, header);
};