參考資料
https://www.jianshu.com/p/ba40da728806
前言
當我們使用開發者工具的時候,看具體某個操作調用的什麼接口,傳入了什麼參數等信息。如果我們想在本地模擬的時候,需要postman 模擬參數然後調用接口,這時候就需要了解怎麼合理的傳入參數了。
1、Content-type的類型
講傳值之前,先講下Content-type的類型
-
1、application/x-www-form-urlencoded
1)瀏覽器的原生form表單
2) 提交的數據按照 key1=val1&key2=val2 的方式進行編碼,key和val都進行了URL轉碼 -
2、multipart/form-data
常見的 POST 數據提交的方式。我們使用表單上傳文件時,必須讓 form 的 enctype 等於這個值。
<form action="/" method="post" enctype="multipart/form-data">
<input type="text" name="description" value="some text">
<input type="file" name="myFile">
<button type="submit">Submit</button>
</form>
-
3、application/json
消息主體是序列化後的 JSON 字符串,這個類型越來越多地被大家所使用.這種方案,可以方便的提交複雜的結構化數據,特別適合RESTful 的接口 -
4、text/xml
是一種使用 HTTP 作爲傳輸協議,XML 作爲編碼方式的遠程調用規範
2、request payload
參考資料:https://segmentfault.com/a/1190000018774494(寫的很好,因爲我現在對於這方面知識使用不多也不深,所以只泛泛說下,後續若有新的見解再補上)
Request Payload更準確的說是http request的payload body。一般用在數據通過POST請求或者PUT請求。它是HTTP請求中空行的後面那部分。(PS:這裏涉及一個http常被問到的問題,http請求由哪幾部分組成,一般是請求行,請求頭,空行,請求體。payload body應該是對應請求體。)
區別就是,他們只是因爲Content-Type設置的不同,並不是數據提交方式的不同,這兩種提交都會將數據放在message-body中。但是chrome瀏覽器的開發者工具會根據這個ContentType區分顯示方式。
3、postman傳參
map和list類似 故這裏直說map這一種
1、
我這邊寫了個測試的Controller來測試這個方法
@RequestMapping(value = "/testPara",method = RequestMethod.POST)
@ResponseBody
public String testHive(@RequestBody Map<Integer,String> map) {
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println("==========");
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
System.out.println("==========");
}
return "sucess";
}
這裏注意:
@RequestBody主要用來接收前端傳遞給後端的json字符串中的數據的(請求體中的數據的);GET方式無請求體,所以使用@RequestBody接收數據時,前端不能使用GET方式提交數據,而是用POST方式進行提交。在後端的同一個接收方法裏,@RequestBody與@RequestParam()可以同時使用,@RequestBody最多隻能有一個,而@RequestParam()可以有多個。
2、
打開postman,順序執行一下3步操作即可,如圖所示
1、選擇請求方式,填入URL
2、切到Header,填寫一對鍵值,key:Content-Type,value:application/json
3、切到Body,選擇raw,後面選擇"JSON(application/json)",內容框寫Map的json串格式