spring boot 傳參
spring boot 中的Controller或者RestController接收參數的方法是一樣的。這章目標是對幾種常用的傳參都寫個例子。
創建package: com.biboheart.demos.api,這個包裡放置API接口的RestController
在com.biboheart.demos.api包中創建一個class: ParamController。這章的示例都在這個類中進行。
PathVariable
路徑中包含參數,這種情況適合與傳遞一個不能為空值的參數。比如有些應用中,查詢某個企業的數據,必須包含企業的編號,就可以在地址裡接收這個編號。
在ParamController中增加一個函數PathParam
package com.biboheart.demos.api;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ParamController {
@RequestMapping(value = "/demo/param/path/{sn}")
public String pathParam(@PathVariable String sn) {
return "接收到參數:" + sn;
}
}
路徑中的參數通過{sn}接收值。
使用名稱接收參數
使用名稱接收參數比較直觀,我用得比較多。不用註解。跟客戶端傳的參數同名就可以接收到。如下例子中的reqParam
package com.biboheart.demos.api;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ParamController {
....
@RequestMapping(value = "/demo/param/req")
public String reqParam(String name, Integer age) {
return "接收到參數{name:" + name + ";age:" + age + "}";
}
}
也可以用get傳參
使用對象接收參數
上面用參數名稱接收值,只要與請求時的名稱一致就能接收到參數值。如果需要傳遞的參數比較多的時候,就不適合一個一個參數寫在函數里了,那樣很不方便,也容易出錯。可以把這些參數寫到一個對象裡接收。如下例子
創建一個package: com.biboheart.demos.model,創建一個類Person
package com.biboheart.demos.model;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class Person {
private String name;
private Integer age;
private Integer sex;
private String addres;
}
用Person對象接收參數
package com.biboheart.demos.api;
import com.biboheart.demos.model.Person;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ParamController {
...
@RequestMapping(value = "/demo/param/model")
public String modelParam(Person person) {
return "接收到參數:" + person.toString();
}
}
雖然這樣的方式也能接收get傳參,但是因為需要傳的參數多了,用get顯得不太方便。這裡就不測試GET方式請求了。
使用SpringBoot(API傳參)
有的時候,需要接收JSON傳參。比如某些服務的調用需要開發一個回調函數接收對方的回調並獲得參數值為結果,對方回調回來的值是JSON格式的值,這時候就需要接收JSON傳參數了。用RequestBody可以接收到JSON傳值。
package com.biboheart.demos.api;
import com.biboheart.demos.model.Person;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ParamController {
...
@RequestMapping(value = "/demo/param/json")
public String jsonParam(@RequestBody Person person) {
return "接收到參數:" + person.toString();
}
}
需要JSON請求才能正確接到值
Java學習資料分享
整理不易,需要完整資料的幫忙轉發關注後臺私信“Java學習”即可獲取,謝謝大家。
閱讀更多 Java之高級架構 的文章