有关vue的axios拦截器发送请求时的数据处理问题

有关vue的axios拦截器发送请求时的数据处理问题

问题描述:

我在vue里设置了axios拦截器,request提交的数据为json给后端,现在我想提交带有图片的formdata,请问有办法避开拦截器发送到后端吗。

//http request 拦截器
service.interceptors.request.use(
    config => {
        showLoading()
        const token = store.getters['user/token']
        const user = store.getters['user/userInfo']
        config.data = JSON.stringify(config.data);
        config.headers = {
            'Content-Type': 'application/json',
            'x-token': token,
            'x-user-id':user.ID
        }
        return config;
    },

这是前端的发送数据请求,uploadUserImage为api接口。

httpRequest(params){
        let objData = {};
        let fd = new FormData();
        fd.append("file", params.file);
        fd.append("FileName", params.file.name)
        fd.forEach((value, key) => objData[key] = value);
        console.log(params)
        console.log(JSON.stringify(objData))
        uploadUserImage(fd).then(res =>{
          console.log(res)
        })
        .catch(err => {
          console.log(err)
        })
      },

重新定义axios上传图片 区分数据上传的方法

我的写法是定义一种上传方式为‘POST_FORM’来和普通的POST进行区分,在拦截里如果上传方式为POST_FORM就转为POST,且data保持原样不转为json