前后端數據傳遞之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 : 需要在表單中進行文件上傳時使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM