詳解SpringBoot中5種類型參數傳遞和json數據傳參的操作
當涉及到參數傳遞時,Spring Boot遵循HTTP協議,并支持多種參數傳遞方式。這些參數傳遞方式可以根據請求的不同部分進行分類。
- 路徑參數(Path Parameters):
- 路徑參數是指在URL路徑中的一部分,用于標識資源或指定操作。路徑參數通常以{}的形式出現在URL中,如/users/{id},其中id就是一個路徑參數。路徑參數可以在URL中動態(tài)地改變,從而實現對不同資源的操作。使用路徑參數時,Spring Boot使用@PathVariable注解將路徑參數綁定到方法參數上。
- 查詢參數(Query Parameters):
- 查詢參數通常作為URL的一部分,以?開始,以key=value的形式出現,多個參數之間使用&連接,如/users?id=1&name=John。查詢參數主要用于篩選或過濾資源。在Spring Boot中,可以使用@RequestParam注解將查詢參數綁定到方法參數上。請求體參數(Request Body Parameters):
- 請求體參數是通過HTTP請求體中發(fā)送的數據,通常用于傳遞復雜結構的數據,如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協議的規(guī)范和Spring Boot的設計,開發(fā)人員可以選擇合適的參數傳遞方式來滿足業(yè)務需求。這些參數傳遞方式在RESTful API開發(fā)中非常常見,可以用于處理各種場景下的數據傳輸。
普通參數
我們在UserController類中寫入這一段代碼
@RequestMapping("/commonParamDifferentname")
@ResponseBody
public 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;
@Override
public 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")
@ResponseBody
public 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;
@Override
public 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")
@ResponseBody
public String pojoContainPojoParam(User user){
System.out.println("pojo嵌套pojo參數傳遞 user ==> "+user);
return "{'module':'pojo contain pojo param'}";
}
繼續(xù)測試

運行成功

數組參數
@RequestMapping("/arrayParam")
@ResponseBody
public String arrayParam(String[] likes){
System.out.println("數組參數傳遞 likes ==> "+ Arrays.toString(likes));
return "{'module':'array param'}";
}


運行成功

集合參數
@RequestMapping("/listParam")
@ResponseBody
public String listParam(@RequestParam List<String> likes){
System.out.println("集合參數傳遞 likes ==> "+ likes);
return "{'module':'list param'}";
}


運行成功

json數據傳參
我們在SpringMvcConfig里面加入這一段代碼@EnableWebMvc,開啟json數據自動轉換

json格式
我們找到上面 集合參數 的代碼,把@RequestParam修改為@RequestBody
@RequestMapping("/listParamForJson")
@ResponseBody
public String listParamForJson(@RequestBody List<String> likes){
System.out.println("list common(json)參數傳遞 list ==> "+likes);
return "{'module':'list common for json param'}";
}

這里選擇json,在下面寫入數據

發(fā)現可以運行成功

嵌套json格式
@RequestMapping("/pojoParamForJson")
@ResponseBody
public String pojoParamForJson(@RequestBody User user){
System.out.println("pojo(json)參數傳遞 user ==> "+user);
return "{'module':'pojo for json param'}";
}

運行成功

集合格式
@RequestMapping("/listPojoParamForJson")
@ResponseBody
public String listPojoParamForJson(@RequestBody List<User> list){
System.out.println("list pojo(json)參數傳遞 list ==> "+list);
return "{'module':'list pojo for json param'}";
}
如果報錯,重啟一下就好了


運行成功

以上就是詳解SpringBoot中5種類型參數傳遞和json數據傳參的操作的詳細內容,更多關于SpringBoot類型傳參和json傳參的資料請關注腳本之家其它相關文章!
相關文章
一文詳解前端和后端的數據是如何連接的(基于Spring?Boot、Django或Node.js)
這篇文章主要介紹了前端和后端的數據是如何連接的相關資料,文中通過示例介紹的非常詳細,舉例講解的是基于Spring?Boot、Django或Node.js,需要的朋友可以參考下2025-01-01
Spring?Boot+RabbitMQ?通過fanout模式實現消息接收功能(支持消費者多實例部署)
這篇文章主要介紹了Spring?Boot+RabbitMQ?通過fanout模式實現消息接收(支持消費者多實例部署),本文通過案例場景分析給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
java中CompletableFuture異步執(zhí)行方法
本文主要介紹了java中CompletableFuture異步執(zhí)行方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06

