vue axios 创建实例无法post,只能get

因为要指定base_url且每次发送数据都要将token发过去,所以自己封装了一个axios方法,里面创建了一个axios实例。虽然设置了method是POST,但是请求时method一直是GET。求解

axios: function(url,params){
  params = params ? params : {};
  return instance = axios.create({
    baseURL: DOMAIN,
    method: "POST",
    responseType: "json",
    params: {
      token: Tools.cookie.getCookie("token")
    }
  })
  return instance.request(url,{params:params});
}

更新:将params改成data之后,浏览器提交时的method变成option

axios: function(url,params){
  params = params ? params : {};
  const instance = axios.create({
    method: "post",
    baseURL: DOMAIN,
    responseType: "json",
    data: {
      token: Tools.cookie.getCookie("token")
    }
  })
  return instance.request(url,{data: params});
}
阅读 6.3k
4 个回答

这个时候我就不得不把源码搬出来了..., 把你默认配置的method覆盖掉了(见下面图片)。

issue上已经有人提了相关问题和PR了,估计过段时间会发版本更新。

我比较赞成的改法是此链接的改法,https://github.com/axios/axio... 你可以fork代码,改动后引入。也可以在request方法调用里添加method达到请求post的目的。

clipboard.png

post时应该使用data传递参数,paramsget时使用

options是因为跨域了。你可能需要做一下代理转发,proxy。
get和post在axios里用的传参数的属性是不一样的,也就是params和data,看看文档就知道了。
可以按照自己需要简单封装一下。给个参考

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题