请求封装固定参数

96 阅读1分钟

有一个需求所有请求封装固定参数 参数取值在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 } }