在前后端分離項目開發中,肯定會有前后端聯調。這時候會存在很多的問題。如:前端是否能夠找到后端;前端是否使用了正確的請求方式;前端是否給后端傳輸了正確的數據;后端是否給前端響應了正確的數據等等。query string、formData和request payload的區別,你真的知道嗎?
現實和理想總有差距。當前端傳給后端的數據是正確的,但是后端卻愣是拿不到?
怎么會這樣?為什么呢?
因為,前后端的數據格式不同。即:前端給后端傳輸的數據格式和后端接收數據的方式不匹配。以下主要說一下前端,即:只關注請求時的數據格式。
1、地址欄傳輸數據
1)、query string Parameters:
當請求方式是get時,瀏覽器會使用查詢字符串的方式進行傳遞數據,即:query string Parameters
查詢字符串的規則:請求參數使用 URL地址和“問號傳參“ 的方式進行傳遞----用問號把url和請求參數分開。
請求參數的格式:以鍵值對的方式體現,多個鍵值對之間用&隔開。
假設:請求地址為 newsList.php。請求參數是pageIndex和pageCount。
那么,請求的格式為:newsList.php?pageIndex=1&pageCount=10;
如下圖,請求方式為get,在chrome瀏覽器的network里看到的是:query string Parameters
2、 請求體中傳輸數據
當請求方式不是get(大部分情況是post或put)時,那么請求的數據不是在url上,而是在請求體里。請求體的英文就是:request payload。但是chrome瀏覽器針對不同的content-type有做了區分,分別是formData和request payload。
1)、formData
content-type的值是" application/x-www-form-urlencoded"或者 multipart/form-data; boundary=----WebKitFormBoundaryBoMA1XQDUpwpxKQg 時,那么,就是用的是formData的格式傳遞數據
2)、request payload
content-type的值是" text/plain"或者"application/json" 時,那么,就是用的是request payload的格式傳遞數據
附:默認的數據格式:
1、傳統的ajax請求時候,Content-Type默認為"文本"類型。
2、傳統的form提交的時候,Content-Type默認為"Form"類型( application/x-www-form-urlencoded )
3、axios傳遞字符串的時候,Content-Type默認為"Form"類型( application/x-www-form-urlencoded )
4、axios傳遞對象的時候,Content-Type默認為"JSON"類型(( application/json)
更多關于前端培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。