最近寫項目中突然發現有人再controller層寫@PostMapping,這對於經常用@RequestMapping的我來說,感到跟奇怪,網上搜尋了一些資料,特在此整合一下:
Spring4.3中引進了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping} 來幫助簡化常用的HTTP方法的映射 並更好地表達被注解方法的語義
@GetMapping: 處理get請求,傳統的RequestMapping來編寫應該是@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)
新方法可以簡寫為:
@GetMapping("/get/{id}")
@PostMapping: 處理post請求,傳統的RequestMapping來編寫應該是@RequestMapping(value = “/get/{id}”,method = RequestMethod.POST)
新方法可以簡寫為:
@PostMapping("/get/{id}")
@PutMapping: 和PostMapping作用等同,都是用來向服務器提交信息。如果是添加信息,傾向於用@PostMapping,如果是更新信息,傾向於用@PutMapping。兩者差別不是很明顯。
@DeleteMapping 刪除URL映射,具體沒有再實踐中用過,不知道好在什么地方
@PatchMapping 至今不知如何用,再什么場景下用。。。有知道的歡迎留言或私信
上面所有的mapping歸根到底就是兩種請求,即:post和get,Spinrg官方引進眾多請求的原因個人感覺是,簡化配置。post和get兩者的區別如下:
首先,什么情況下是get請求呢:
直接在瀏覽器地址欄輸入某個地址
表單默認的提交方式
什么情況下是post請求呢:
設置表單method = “post”
ajax type: ‘post’,
瀏覽器通過url處理的請求為get請求,如果后台限制只能用post請求會發生如下錯誤:
method not allowed, The specified HTTP method is not allowed for the requested resource.
1
get請求特點:
a. 請求參數會添加到請求資源路徑的后面,只能添加少量參數(因為請求行只有一行,大約只能存放2K左右的數據)
b. 請求參數會顯示在瀏覽器地址欄,路由器會記錄請求地址 (極為的不安全)
c.如果傳輸中文,必定會亂碼(原因:get請求默認編碼格式為:IIO-8859-1,后台編碼格式一般為:GBK或者UTF-8)
post請求的特點:
a. 請求參數添加到實體內容里面,可以添加大量的參數(也解釋了為什么瀏覽器地址欄不能發送post請求,在地址欄里我們只能填寫URL,並不能進入到Http包的實體當中)
b. 相對安全,但是,post請求不會對請求參數進行加密處理(可以使用https協議來保證數據安全)
————————————————
版權聲明:本文為CSDN博主「只會debugger」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/java_xdo/article/details/88711192