api封装方案

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值