🎊專欄【SpringBoot】
🍔喜歡的詩句:天行健,君子以自強不息。
🎆音樂分享【如愿】
🎄歡迎并且感謝大家指出小吉的問題🥰
文章目錄
- 🌺普通參數
- 🌺POJO參數
- 🌺嵌套pojo參數
- 🌺數組參數
- 🌺集合參數
- 🎄json數據傳參
- 🛸json格式
- 🛸嵌套json格式
- 🛸集合格式
當涉及到參數傳遞時,Spring Boot遵循HTTP協議,并支持多種參數傳遞方式。這些參數傳遞方式可以根據請求的不同部分進行分類。
- 路徑參數(Path Parameters):
路徑參數是指在URL路徑中的一部分,用于標識資源或指定操作。路徑參數通常以{}的形式出現在URL中,如/users/{id},其中id就是一個路徑參數。路徑參數可以在URL中動態地改變,從而實現對不同資源的操作。使用路徑參數時,Spring Boot使用@PathVariable注解將路徑參數綁定到方法參數上。 - 查詢參數(Query Parameters):
查詢參數通常作為URL的一部分,以?開始,以key=value的形式出現,多個參數之間使用&連接,如/users?id=1&name=John。查詢參數主要用于篩選或過濾資源。在Spring Boot中,可以使用@RequestParam注解將查詢參數綁定到方法參數上。 - 請求體參數(Request Body Parameters):
請求體參數是通過HTTP請求體中發送的數據,通常用于傳遞復雜結構的數據,如JSON、XML等。請求體參數可以包含多個字段,并且可以表示更為復雜的數據模型。在Spring Boot中,可以使用@RequestBody注解將請求體參數綁定到方法參數上。 - 表單參數(Form Parameters):
表單參數通常使用HTML表單提交的數據,可以通過application/x-www-form-urlencoded或multipart/form-data格式傳輸。表單參數與查詢參數類似,但是通常用于提交數據而不是進行篩選。在Spring Boot中,可以使用@RequestParam注解將表單參數綁定到方法參數上。 - 請求頭參數(Request Header Parameters):
請求頭參數包含在HTTP請求的頭部信息中,可以用于傳遞附加的元數據,如鑒權信息、用戶代理等。在Spring Boot中,可以使用@RequestHeader注解將請求頭參數綁定到方法參數上。
使用理論進行講解時,我們可以了解這些參數傳遞方式的原理和用途。根據HTTP協議的規范和Spring Boot的設計,開發人員可以選擇合適的參數傳遞方式來滿足業務需求。這些參數傳遞方式在RESTful API開發中非常常見,可以用于處理各種場景下的數據傳輸。
🌺普通參數
我們在UserController類中寫入這一段代碼
@RequestMapping("/commonParamDifferentname")@ResponseBodypublic String commonParamDifferentName(@RequestParam("name") String userName,int age){System.out.println("普通參數傳遞 userName ==> "+userName);System.out.println("普通參數傳遞 age ==> "+age);return "{'module':'common param different name'}";}
接收成功
🌺POJO參數
我們在User類中寫入這一段代碼
package com.example.domain;public class User {private String name;private int age;private Address address;@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", address=" + address +'}';}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
我們在UserController類中寫入這一段代碼
//POJO參數:請求參數與形參對象中的屬性對應即可完成參數傳遞@RequestMapping("/pojoParam")@ResponseBodypublic String pojoParam(User user){System.out.println("pojo參數傳遞 user ==> "+user);return "{'module':'pojo param'}";}
運行成功
🌺嵌套pojo參數
適用于下面這種,可以反復寫
我們在Address類中寫入這一段代碼
package com.example.domain;
public class Address {private String province;private String city;@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", city='" + city + '\'' +'}';}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}
}
在UserController里面寫入這一段代碼
@RequestMapping("/pojoContainPojoParam")@ResponseBodypublic String pojoContainPojoParam(User user){System.out.println("pojo嵌套pojo參數傳遞 user ==> "+user);return "{'module':'pojo contain pojo param'}";}
繼續測試
運行成功
🌺數組參數
@RequestMapping("/arrayParam")@ResponseBodypublic String arrayParam(String[] likes){System.out.println("數組參數傳遞 likes ==> "+ Arrays.toString(likes));return "{'module':'array param'}";}
運行成功
🌺集合參數
@RequestMapping("/listParam")@ResponseBodypublic String listParam(@RequestParam List<String> likes){System.out.println("集合參數傳遞 likes ==> "+ likes);return "{'module':'list param'}";}
運行成功
🎄json數據傳參
我們在SpringMvcConfig里面加入這一段代碼@EnableWebMvc
,開啟json數據自動轉換
🛸json格式
我們找到上面 集合參數 的代碼,把@RequestParam修改為@RequestBody
@RequestMapping("/listParamForJson")@ResponseBodypublic String listParamForJson(@RequestBody List<String> likes){System.out.println("list common(json)參數傳遞 list ==> "+likes);return "{'module':'list common for json param'}";}
這里選擇json,在下面寫入數據
發現可以運行成功
🛸嵌套json格式
@RequestMapping("/pojoParamForJson")@ResponseBodypublic String pojoParamForJson(@RequestBody User user){System.out.println("pojo(json)參數傳遞 user ==> "+user);return "{'module':'pojo for json param'}";}
運行成功
🛸集合格式
@RequestMapping("/listPojoParamForJson")@ResponseBodypublic String listPojoParamForJson(@RequestBody List<User> list){System.out.println("list pojo(json)參數傳遞 list ==> "+list);return "{'module':'list pojo for json param'}";}
如果報錯,重啟一下就好了
運行成功