1. 程式人生 > 其它 >前後端資料傳遞之form-data

前後端資料傳遞之form-data

前情


最近在專案開發中,跟服務端連調發現介面一直報錯,服務端一直提示是資料沒有傳,而通過瀏覽器控制檯發現數據是有傳的。


服務通過postman自測是OK的。經過和服務端一起定位發現服務端只接收以form-data格式傳遞的資料,而我傳遞的是JSON物件。

Why?


平時前後端介面資料連調很少有走form-data形式的,form-data一般用來做檔案上傳才會用到,如果要以form-data傳遞資料,則需要通過藉助FormData物件

解決方案


  1. 跟服務端協商,服務端是否可修改成支援直接傳遞JSON物件(推薦)
  2. 也可前端直接傳遞form-data資料給服務端即可,關鍵程式碼如下:
let param = new FormData();
param.append('chatGid', '******');
param.append('chatItemGid', '******');
// 注意事項
// 對於傳遞檔案物件,是需要三個引數的,第一個為欄位,第二個是二進位制檔案本體,第三個是檔名
param.append('file', 檔案二進物件, 檔名);

問題關聯


前後端資料連調有幾種常見的資料傳遞格式,對於不同格式,需要設定不能的Content-Type

  1. text/plain :純文字格式
  2. application/json: JSON資料格式
  3. application/x-www-form-urlencoded :預設的encType,form表單資料被編碼為key/value格式傳送到伺服器(表單預設的提交資料的格式)
  4. multipart/form-data : 需要在表單中進行檔案上傳時使用