在全局封装的请求方法的地方调用:
import { addModelUrl } from '../utils/baseFetch'
service.interceptors.request.use(request => {
// 调用公共传model 参数方法
addModelUrl(request)
localStorage.setItem('baseURL', process.env.VUE_APP_BASE_URL)
const { id } = store.state.app.userInfo
const token = localStorage.getItem('sxToken')
if (token) {
request.headers.token = token
}
if (id) {
request.headers.Pragma = 'no-cache'
request.headers['Cache-Control'] = 'no-cache, no-store'
if (request.method !== 'post') {
if (!request.params) {
request.params = {}
}
} else {
if (request.toast === undefined) {
request.toast = true
}
if (!request.data) {
request.data = {}
}
}
}
return request
})
把公共接口写成一个json文件白名单,我这边在src下面的assets下面新建json文件夹,里面建commonInterfacjson文件内容:
[
{ 'url': '/analysis/queryDocumentProcessizeDegreeLineChart' },
{ 'url': '/application/queryCopy' },
{ 'url': '/attach/download' },
{ 'url': '/attach/upload' },
{ 'url': '/basBpmUserChange/query' },
{ 'url': '/basBpmUserChange/save' },
{ 'url': '/bpm/agent/batch-delete' },
{ 'url': '/bpm/agent/delete' },
{ 'url': '/bpm/agent/query' },
{ 'url': '/bpm/agent/save' },
{ 'url': '/bpm/collection/quick-query' },
{ 'url': '/bpm/createnav/initiate-list' },
{ 'url': '/bpm/createnav/query' },
{ 'url': '/bpm/linkProject/query' },
{ 'url': '/bpm/pass-read/passread' },
{ 'url': '/bpm/process/manage/withDrawInstance' },
{ 'url': '/bpm/processquery/v2/mySponsor' },
{ 'url': '/bpm/processquery/v2/processManage' },
{ 'url': '/bpm/processquery/v2/tracking' },
{ 'url': '/bpm/processversion/quickQuery' },
{ 'url': '/bpm/productRelease/manage/deleteProductReleaseInfo' },
{ 'url': '/bpm/urge' },
{ 'url': '/businessrule/attribute/quickquery' },
{ 'url': '/businessRuleAuth/batchDelete' },
{ 'url': '/businessRuleAuth/delete' },
{ 'url': '/businessRuleAuth/getAllTree' },
{ 'url': '/businessRuleAuth/queryList' },
{ 'url': '/businessRuleAuth/saveOrUpdate' },
{ 'url': '/businessRuleAuth/updateState' },
{ 'url': '/businessRuleManage/dele' },
{ 'url': '/businessRuleManage/deleteReplace' },
{ 'url': '/businessRuleManage/duplicateRule' },
{ 'url': '/businessRuleManage/export-brs' },
{ 'url': '/businessRuleManage/exportReplace' },
{ 'url': '/businessRuleManage/getBusinessRuleDetail' },
{ 'url': '/businessRuleManage/getReplace' },
{ 'url': '/businessRuleManage/import-brs' },
{ 'url': '/businessRuleManage/preview-brs' },
{ 'url': '/businessRuleManage/queryList' },
{ 'url': '/businessRuleManage/replace' },
{ 'url': '/businessRuleManage/saveBtType' },
{ 'url': '/businessRuleManage/saveBusinessRule' },
{ 'url': '/datadictionary/getDictionaryOption' },
{ 'url': '/datamanage/dataImport' },
{ 'url': '/document/print' },
{ 'url': '/document-modeling/getCopy' },
{ 'url': '/electronicSignature/download' },
{ 'url': '/foldertree/deleteCopy' },
{ 'url': '/foldertree/saveCopy' },
{ 'url': '/mangercenterdoc/uploadCopy' },
{ 'url': '/modelapprove/query' },
{ 'url': '/modellist/getUserRoleNameCopy' },
{ 'url': '/modellist/queryKpiInBase' },
{ 'url': '/modellistjson/ZCGetJson' },
{ 'url': '/modellistjsonname/query' },
{ 'url': '/modelResponsibility/getPosts' },
{ 'url': '/modeltree/getTreeNodeWithoutAuthCopy' },
{ 'url': '/om/getKpiIndexNum' },
{ 'url': '/om/getProcessEfficiency' },
{ 'url': '/om/getProcessUtilization' },
{ 'url': '/om/getRiskIndexNum' },
{ 'url': '/org/info/query' },
{ 'url': '/org/manager/findOrgUsers' },
{ 'url': '/org/tree/deleteTree' },
{ 'url': '/org/tree/getAllRootTree' },
{ 'url': '/process/analysis/postAverageTime' },
{ 'url': '/processModel/getBusinessRuleAllTree' },
{ 'url': '/processModel/getModelTree' },
{ 'url': '/processNodeConfig/saveProcessField' },
{ 'url': '/processPermissions/delete' },
{ 'url': '/processPermissions/deleteList' },
{ 'url': '/processPermissions/query' },
{ 'url': '/processPermissions/save' },
{ 'url': '/regulation/download' },
{ 'url': '/regulation/getRegulationFolderCopy' },
{ 'url': '/regulation/queryCopy' },
{ 'url': '/regulation/queryReleasedCopy' },
{ 'url': '/regulation/queryReleasedel' },
{ 'url': '/regulation/save2Copy' },
{ 'url': '/regulation/upload' },
{ 'url': '/repositorybo/getRepositoryboFolder' },
{ 'url': '/repositorybo/page' },
{ 'url': '/select/user/cqp/getTotalOrgByNameCopy' },
{ 'url': '/select/user/cqp/getTotalOrgCopy' },
{ 'url': '/service/getHomePegeContent' },
{ 'url': '/subjectrule/batchsave' },
{ 'url': '/systemAuditManger/getDetailByOrgid' },
{ 'url': '/systemChapterRelation/getTree' },
{ 'url': '/systemManagement/getHistory' },
{ 'url': '/systemManagement/getInterList' },
{ 'url': '/test/automatic/batch-delete' },
{ 'url': '/test/automatic/delete' },
{ 'url': '/test/automatic/query' },
{ 'url': '/test/automatic/run-test' },
{ 'url': '/test/automatic/test-record-list' },
{ 'url': '/vckpi/queryTreeD2D/' },
{ 'url': '/frameVersion/getTreeNode' }
]
这里就像一个小型的数据库,里面所有的数据都是公共接口,里面每一个接口在页面很多地方调用2次或多次。在utils文件夹里,新建一个baseFetcjs,作为一个工具函数,里面封装公共接口传参方法:
// 封装 公共接口 headers 里传model参数
import store from '@/store'
// 获取公共接口白名单
const commonInterface=require('../assets/json/commonInterface.json')
const addModelUrl=(currentRequest)=>{
// 存储当前页面的hash值
store.commit('app/setCommonInterface', window.location.hash.slice(1))
// model 公共参数
let modelInterface=''
modelInterface=localStorage.getItem('CommonInterface')
// 前面没有 / 的request.url 处理为/
let newRequestUrl=currentRequest.url?currentRequest.url:''
if(newRequestUrl[0]!='/'){
newRequestUrl='/'+newRequestUrl
}
// 请求的接口和公共接口白名单对比
for (let index = 0; index < commonInterface.length; index++) {
const element = commonInterface[index];
if(newRequestUrl.includes(element.url)){
// 对比上就是公共接口 给headers加model 参数
currentRequest.headers['model'] =modelInterface?modelInterface:''
}
}2
}
export {addModelUrl}
文章为作者独立观点,不代表观点