現在使用spring boot開發一個web應用是非常普遍的了,ajax請求更是標配;那么你在ajax請求時,是否遇到過在controller中獲取不到參數的情況呢?特別是post請求;
# GET
GET請求的參數會拼接到URL中的,那么在controller的方法中,可以不指定`@RequestParam`注解,默認通過參數名稱從URL中獲取;也可以指定注解,但是如果不傳遞此參數就會報錯了,因為默認是必須的;
# POST
## 'Content-type': 'application/json;charset=UTF-8'
- 請求方式
這個請求參數就會在RequestPayload中傳遞了;
- 參數獲取
那么在Controller里,就必須通過@RequestBody來獲取參數了,並且@RequestBody在一個方法中只能使用一次,因為RequestBody是數據流只能被讀取一次;
假如存在一個Bean是User 有id、name等屬性;就是`(@RequestBody User user)`;RequestPayload中只有對象的屬性,並沒有`use`這個屬性;
假如使用的是基本類型,例如`@RequestBody String name`,那么RequestPayload中只需要有`world`就行了,即name的值,獲取到的就是name='world';
##
content-type:
application/x-www-form-urlencoded; charset=UTF-8
不明確指定時就默認是這種,Form表單就是這種;
- 請求方式
請求參數會在FormData中傳遞,並且要使用拼接的方式傳遞,不能使用json字符串,否則后端是獲取不到值的
- 參數獲取
在Controller里可以通過指定`@RequestParam`注解來獲取,也可以不指定;
# 總結