前兩天同事寫項目時,遇到一個問題。項目為vue的項目,axios提交post請求,后端收到的參數格式不正確。
同事提交的參數如下:
a[0]: 1,
a[1]: 2,
a[2]: 3
后端需要的的參數格式:
a[]: 1,
a[]: 2,
a[]: 3
查閱各種資料后,發(fā)現使用qs對參數進行序列化方式是最方便的。
使用qs對字符串進行序列化默認格式:
qs.stringify({ a: [1, 2, 3] });
// 'a[0]=1&a[1]=2&a[2]=3'
通過設置indices為false可以實現如下效果
qs.stringify({ a: [1, 2, 3] }, { indices: false });
// 'a=1&a=2&a=3'
而我們后端希望的數據格式,可以通過arrayformat來實現:
qs.stringify({ a: [1, 2, 3 ] }, { arrayFormat: 'indices' });
// 'a[0]=1&a[1]=2&a[2]=3'
qs.stringify( { a: [1, 2, 3 ]} , { arrayFormat: 'brackets' });
// 'a[]=1&a[]=2&a[]=3'
qs.stringify( {a: [1, 2, 3 ]}, { arrayFormat: 'repeat' } );
// 'a=1&a=2&a=3'
更多qs功能參考以下網址:
https://www.npmjs.com/package/qs