先看下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