使用 application/x-www-urlencoded 形式的post请求

使用 application/x-www-urlencoded 形式的post请求

在一般情况下,我们使用axios进行post请求是这样的

axios.post('url', {
    username,
    password,
  })
.then((res) => { ... })
.catch((res) => { ... });

当我们需要创建一些信息,调用接口上传一些数据的时候,我们用以上的方式会发生500错误,原因是axios默认是application/json格式的,即使添加了请求头 最后的content-type的形式还是 json 的,需要进行字符串的转换才能成功请求。


解决方法

axios github上提供的方法

1.一个比较常用的方法是: 使用URLSearchParams API

  const params = new URLSearchParams();
  params.append('username', username);
  params.append('password', password);
  axios.post('url', params)
    .then((res) => {...})
    .catch((res) => {...});

2.使用qs序列化json对象(在某种情况下会出现中文乱码,需要后端过滤支持)

  var qs = require('qs');
 axios.post('url', qs.stringify({
  'username': username,
  'password': 'password'
 }))
    .then((res) => {...})
    .catch((res) => {...});
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容