axios怎么在不同情况下传不同的centent-type

request拦截里统一用了application/x-www-form-urlencoded,但后端有个需求就是更具不同情况使用不同的content
分别是'application/x-www-form-urlencoded' & 'application/json',请问怎么配置呢
'


request.interceptors.request.use(config => {
  config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
  config.transformRequest = [function (data) {
    let src = ''
    let flag = ''
    for (const item in data) {
      src += flag + encodeURIComponent(item) + '=' + encodeURIComponent(data[item])
      flag = '&'
    }
    return src
  }]
  ...
  ...
  ...
}
阅读 2k
2 个回答

方案很多,这里给出一种:

第一,不要用全局拦截器。

第二,实例化多个 AxiosInstance,每个实例用单独的拦截器,根据接口不同使用不同的实例。

去掉拦截器里设置 headers['Content-Type']的部分,设置默认的 headersapplication/json :

axios.defaults.headers['Content-Type'] = 'application/json';

然后需要用到 application/x-www-form-urlencoded 时,在请求的 config 里设置 headers, eg:

axios.post('/user/12345', {name: 'new name'}, {
  headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题