axios实现请求参数下划线转为驼峰,响应参数驼峰转为下划线

axios实现请求参数下划线转为驼峰,响应参数驼峰转为下划线

1.src下新建utils文件夹

2.utils文件夹下新建request.js文件(代表请求文件)和tools.js(代表工具文件)

3.request.js文件一定要在mais.js中引入

tools.js文件代码

function underline (s) {
  return s.replace(/_(\w)/g, function (all, letter) {
    return letter.toUpperCase()
  })
}
function humpline (s) {
  return s.replace(/([A-Z])/g, '_$1').toLowerCase()
}
function jsonNewline (obj) {
  if (obj instanceof Array) {
    obj.forEach(function (v) {
      jsonNewline(v)
    })
  } else if (obj instanceof Object) {
    Object.keys(obj).forEach(function (key) {
      let newKey = underline(key)
      if (newKey !== key) {
        obj[newKey] = obj[key]
        delete obj[key]
      }
      jsonNewline(obj[newKey])
    })
  }
}
function jsonline (obj) {
  if (obj instanceof Array) {
    obj.forEach(function (v) {
      jsonline(v)
    })
  } else if (obj instanceof Object) {
    Object.keys(obj).forEach(function (key) {
      let newKey = humpline(key)
      if (newKey !== key) {
        obj[newKey] = obj[key]
        delete obj[key]
      }
      jsonline(obj[newKey])
    })
  }
}
export default {
  jsonNewDate: function (obj) {
    jsonNewline(obj)
  },
  jsonNewLineData: function (obj) {
    jsonline(obj)
  },
}

request.js文件代码

import axios from "axios"
import tooles from './tools.js'
axios.defaults.timeout = 3000
axios.interceptors.request.use(request => {
  if (request.params) { // get请求参数
    let temdata = JSON.parse(JSON.stringify(request.params)) // 防止深拷贝跟浅拷贝
    tooles.jsonNewDate(temdata)
    request.params = temdata
  } if(request.data){ // post请求参数
    let temdata = JSON.parse(JSON.stringify(request.data)) // 防止深拷贝跟浅拷贝
    tooles.jsonNewDate(temdata)
    request.data = temdata
  }
  return request
}, (error) => {
  return Promise.reject(error);
})
axios.interceptors.response.use(data => {  // 该处为后端返回整个内容
 if (data.config.url.includes('xxx')) {
   tooles.jsonNewLineData(data.data)
    return data.data['_c-_response-_body'] || []
  }
  return data
}),(error=>{
  return Promise.reject(error);
})
export default {
  get:axios.get,
  post:axios.post,
  put:axios.put,
  delete:axios.delete
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值