前情
最近在項目開發中,跟服務端連調發現接口一直報錯,服務端一直提示是數據沒有傳,而通過瀏覽器控制台發現數據是有傳的。
坑
服務通過postman自測是OK的。經過和服務端一起定位發現服務端只接收以form-data格式傳遞的數據,而我傳遞的是JSON對象。
Why?
平時前后端接口數據連調很少有走form-data形式的,form-data一般用來做文件上傳才會用到,如果要以form-data傳遞數據,則需要通過借助FormData對象
解決方案
- 跟服務端協商,服務端是否可修改成支持直接傳遞JSON對象(推薦)
- 也可前端直接傳遞form-data數據給服務端即可,關鍵代碼如下:
let param = new FormData();
param.append('chatGid', '******');
param.append('chatItemGid', '******');
// 注意事項
// 對於傳遞文件對象,是需要三個參數的,第一個為字段,第二個是二進制文件本體,第三個是文件名
param.append('file', 文件二進對象, 文件名);
問題關聯
前后端數據連調有幾種常見的數據傳遞格式,對於不同格式,需要設置不能的Content-Type
- text/plain :純文本格式
- application/json: JSON數據格式
- application/x-www-form-urlencoded :默認的encType,form表單數據被編碼為key/value格式發送到服務器(表單默認的提交數據的格式)
- multipart/form-data : 需要在表單中進行文件上傳時使用