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

发布于 2022-09-13 00:37:31 字数 570 浏览 33 评论 0

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
  }]
  ...
  ...
  ...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清眉祭 2022-09-20 00:37:31

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

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

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

情定在深秋 2022-09-20 00:37:31

去掉拦截器里设置 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'}
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文