前後端資料傳遞之form-data
阿新 • • 發佈:2021-06-21
前情
最近在專案開發中,跟服務端連調發現介面一直報錯,服務端一直提示是資料沒有傳,而通過瀏覽器控制檯發現數據是有傳的。
坑
服務通過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 : 需要在表單中進行檔案上傳時使用