utils/server.js
import request from "./request";
const methodTypes = {
GET: ["get", "delete"],
POST: ["post", "put"],
};
function Server () {
this.request = request;
}
Server.prototype.sendHttp = function (url, method = "get", preConfig = {}, params = {}, config = {}) {
const obj = methodTypes.POST.includes(method.toLowerCase())
? { data: params }
: { params };
return this.request({ method, url, ...obj, ...preConfig, ...config });
}
Server.prototype.parseApi = function (moduleName, apiObj) {
this[moduleName] = {};
for (const key in apiObj) {
const { url, type = "get", ...other } = apiObj[key];
this[moduleName][key] = this.sendHttp.bind(this, url, type, other);
}
}
export default new Server();
apis/documentInfo.js
import server from "@/utils/server";
const moduleName = "documentInfo";
server.parseApi(moduleName, {
// 多文件上传
uploadFiles: {
url: "/egy_spt/egy-document-info/uploadFiles",
type: "post",
completed: true,
},
// 批量删除文件
deleteFiles: {
url: "/egy_spt/egy-document-info/delete",
type: "post",
completed: true,
},
});
export default server[moduleName];
use
import api from "@/api/emergencyKnowledgeBase";
const { listQuery, delAll } = api;
const res = await listQuery({
limit: pageSize.value,
page: pageNum.value,
});
也可以自动导入和注册。
api/index.js
import server from '@/utils/server';
/**动态引入接口api */
const req = require.context('./modules', true, /\.js$/);
req.keys().forEach((fileName) => {
server.parseApi(fileName.slice(2, -3), req(fileName).default);
});
export default server;