有一个需求所有请求封装固定参数 参数取值在url路由参数上面
const http = axios.create({
baseURL: baseURL, // url = base url + request url
withCredentials: true,
timeout: 5 * 60 * 1000
})
// 请求拦截器
http.interceptors.request.use(
config => {
requestMethod(config)
console.log(config, 'config1111111')
return config
},
error => {
console.log(error) // for debug
return Promise.reject(error)
}
)
function requestMethod(config) {
let i:any = ''
switch (config.method) {
case 'get':
i = config.params
break
case 'post':
i = config.data
break
case 'put':
i = config.params
break
case 'delete':
i = config.params
break
}
// 在请求拿到的参数中统一加上某一些参数(根据自己的项目需求追加)
// 根据项目需要也可以统一做其他操作
i = i ? i : {}
i = Object.assign(i, { //obj为拿到的url参数对象
// appId: obj['id'] || '',
appId: obj['appId'] || window.sessionStorage.getItem('appid') || i['appId'] || '',
projectId: i['projectId'] || obj['projectId'] || '',
projectRscId: i['projectRscId'] || obj['projectRscId'] || '',
version: i['version'] || obj['version'] || ''
})
}
获取url参数
let url = config.url // const url1 = window.location.href;
//获取地址栏路径 const url1 = decodeURI(decodeURI(window.location.href))
const temp1 = url1.split('?')// 对url地址进行分割
const pram = temp1[1]
const obj = {}
if (pram) {
const keyValue = pram.split('&')
for (let i = 0; i < keyValue.length; i++) { // 循环分割挂过后的地址
const item = keyValue[i].split('=')
const key = item[0]
const value = item[1] obj[key] = value } }