postman的幾種數據傳輸格式的區別


先看下get和post請求的區別:

1、get使用url或Cookie傳參,而post將數據放在body中

2、get的url會有長度上的限制,而post的數據則可以非常大

3、post比get安全,因為數據在地址欄上不可見

4、一般get請求用來獲取數據,post請求用來發送數據

Get和Post都是Http協議的組件,所以底層都是使用tcp鏈接。Get的請求方式是將http的header和data一並發往服務端,也就是一條tcp數據包發送,這就會有兩個問題:

數據量有限,依賴於Tcp負載能力,所以攜帶的數據量很大的情況下,容易造成重發。
所有的攜帶的數據只能接受轉化成ASCII字符。
  但是Post不一樣,post使用兩步走,先發送http的header,然后再傳輸data。數據類型也不受限制。而且數據隱秘性比較好。
————————————————原文鏈接:https://blog.csdn.net/weixin_42765975/article/details/99175476

一、postman的傳參方式一般有兩種,params和body;body里面又分了form-data、x-www-form-urlencode、row等等幾種;根據請求方式的不同,傳參方式也不一樣;

1、get請求方式,一般的傳參是params,並且會以url?name="lele"&age=2這樣的格式,接到url的后面,如下圖

 

2、post請求方式,主要也是分為兩種;post是先發送headers,再傳輸data,所以可以先確認header里面的Content-Type的值,這個是data數據的傳輸方式;

如果Content-Type=application/x-www-form-urlencoded,那傳輸方式就選擇body里面的x-www-form-urlencode;

如果Content-Type=mutipart/form-data,那傳輸方式就是body里面的form-data;

application/x-www-form-urlencoded*(這個是form-data默認的enctype屬性類型值,數據url?name=“小小”&age=12,這樣的格式,在ajax請求里面就是用param來標識,@RquestParam就是用來接受這種數據格式的)

x-www-form-urlencode這個的傳參和get里面的params傳參是一樣的,只是x-www-form-urlencode不接到url后面,后台都是用的@RquestParam來接收;

另一種就是Content-Type=application/json,傳輸方式是body里面的row,參數是存放在json中的,參數必須要用@RequestBody才能解析出來。

form-data格式一般是用來進行文件上傳的。使用表單上傳文件時,必須讓
表單的 enctype 等於 multipart/form-data,因為該值默認值為application/x-www-form-urlencoded
RequestParam這種方式只用在Content-Type=application/x-www-form-urlencoded這種情況下才能使用,這里的@RequestParam(“iv”)代表傳參名稱是iv(name=”iv”),且是必填。如果不是必填,可以改成如下形式:sevlet將Body中的key-value轉成Param。

 

上面說的這些都不是絕對的,只是一般規則是這樣;

在發get請求的時候如果在formdata里面加了文件,也可以發請求,並且成功,但是文件是接收不到的,並且這些form-data參數不追加到url,只有params參數會被追加到url;

有一個有趣的現象,如果Content-Type=mutipart/form-data,Body中加入參數並且params里面也加了參數一起發過去,並且出現,params參數和for-data參數出現重名,URL后面也就會拼接參數一起,分別發Post請求和post請求,重名的參數只取params里面的;

如果Content-Type=application/x-www-form-urlencoded和params參數一起發送,如果是String類型,則兩個值會被拼接,其他類型取的是params的參數。

 

RequestBody主要用來接收前端傳遞給后端的json字符串中的數據的(請求體中的 數據的);GET方式無請求體,所以使用@RequestBody接收數據時,前端不能使用GET方式提交數據,而是用POST方式進行提交。在后端的同一個接收方法里,@RequestBody與@RequestParam()可以同時使用,@RequestBody最多只能有一個,而@RequestParam()可以有多個。,沒有@RequestBody修飾直接寫實體類作為參數,后台是接收不到Json字符串的,只能通過參數form-data里面的param接受

————————————————
原文鏈接:https://blog.csdn.net/weixin_42765975/article/details/99175476

 


免責聲明!

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



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