http get請求和post請求的區(qū)別:
get請求是發(fā)送一個數(shù)據(jù)包,將請求(header和data)一次性發(fā)到服務器,返回200
post請求發(fā)送兩個數(shù)據(jù)包,先發(fā)送請求Header,返回100 continue,再發(fā)送data,返回200
注意:
get請求和post請求看似差異很大,其實并沒有本質(zhì)區(qū)別,都使用TCP協(xié)議傳輸。
get請求將參數(shù)放在URL中,post請求將參數(shù)放在body里。但這只是http的約定,并不是規(guī)范,我們可以將get參數(shù)放在body中,也可以將post參數(shù)放在URL里
get請求收不到body參數(shù),不是http的限制,一般是瀏覽器或者服務器的限制。
get請求和post請求在使用不同的注解接收參數(shù)時的情況:
1.@PathVariable
get請求和post請求都可以正確地接收到參數(shù)
2.@RequestParam
當用param的方式傳參時(拼在URL后面),get和post都可以接收到到參數(shù)
post請求用body傳參時,Content-Type設置成application/x-www-form-urlencoded格式,可以接收到參數(shù)
3.@RequestBody
get請求不建議也不支持用body傳參
post請求將Content-Type為application/json,用json格式字符串傳參,可以接收并自動映射為對象。
注意:一個@RequestParam注解只能接收一個參數(shù),如果有多個參數(shù),最好封裝成參數(shù)對象,去掉@RequestParam注解,如下圖: