背景

之前在用 axios 对接后端的时候发现后端收不到 POST 请求,后来检查控制台发现默认的 POST 数据包格式为 x-www-form-urlencoded。而后端接受的数据包格式为 form-data 格式。其实这个老生常谈的问题早已有了解决方案,今天来记录一下备忘。

实现

话不多说,还是上代码吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import axios from "axios";

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.transformRequest = [function (data) {
let ret = ''
let count = 0;
for (let it in data) {
count ++;
ret += encodeURIComponent(it) + '='
+ encodeURIComponent(data[it])
+ (count < data.length) ? '&' : '';
}
return ret
}]

Vue.prototype.$axios = axios