HTTP請求中的Form Data與Request Payload的區別

鄒R-ainna發表於2018-11-22

前端開發中經常會用到AJAX傳送非同步請求,對於POST型別的請求會附帶請求資料。而常用的兩種傳參方式為:Form Data 和 Request Payload。

121212

334343

GET請求

使用get請求時,引數會以key=value的形式拼接在請求的url後面。例如:

http://m.baidu.com/address/getlist.html?limit=50&offset=0&t=1502345139870

複製程式碼

但是受限於請求URL的長度限制,一般引數較少時會使用get請求。

POST請求

當引數數量較多,且對資料有一定安全性要求時,會考慮用post請求傳遞引數資料。POST請求的引數資料是在請求體中。

方式一: Form Data形式

當POST請求的請求頭裡設定Content-Type: application/x-www-form-urlencoded(預設), 引數在請求體以標準的Form Data的形式提交,以&符號拼接,引數格式為key=value&key=value&key=value...

3333

121212

前端程式碼設定:

xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send('a=1&b=2&c=3');
複製程式碼

在servlet中,後端可以通過request.getParameter(name)的形式來獲取表單引數。

方式二:Request Payload形式

如果使用AJAX原生POST請求,請求頭裡設定Content-Type:application/json,請求的引數會顯示在Request Payload中,引數格式為JSON格式:{"key":"value","key":"value"...},這種方式可讀性會更好。

444

334343

後端可以使用getRequestPayload方法來獲取。

Form Data 和 Request Payload 區別

  1. 如果請求頭裡設定Content-Type: application/x-www-form-urlencoded,那麼這個請求被認為是表單請求,引數出現在Form Data裡,格式為key=value&key=value&key=value...

  2. 原生的AJAX請求頭裡設定Content-Type:application/json,或者使用預設的請求頭Content-Type:text/plain;引數會顯示在Request payload塊裡提交。

參考文件:

www.cnblogs.com/btgyoyo/p/6…

xiaobaoqiu.github.io/blog/2014/0…

相關文章