使用Spring Boot開發(fā)API的時候,讀取請求參數(shù)是服務端編碼中最基本的一項操作,Spring Boot中也提供了多種機制來滿足不同的API設計要求。 接下來,就通過本文,為大家總結6種常用的請求參數(shù)讀取方式。如果你發(fā)現(xiàn)自己知道的不到6種,那么趕緊來查漏補缺一下。如果你知道的不止6種,那么告訴
在Spring Boot開發(fā)API時,讀取請求參數(shù)是服務端編碼中最基本的操作之一。Spring Boot提供了多種機制來滿足不同的API設計要求。
接下來,我們將總結6種常用的請求參數(shù)讀取方式。如果你發(fā)現(xiàn)自己知道的不到6種,那么趕緊來查漏補缺一下。如果你知道的不止6種,那么告訴大家,一起互相學習一下吧~
這是最常用的一個注解,用于加載URL中
?
之后的參數(shù)。
比如:這個請求
/user?name=didispace
,就可以使用
@RequestParam
來加載URL中的name參數(shù)。
@GetMapping("/user")
@ResponseBody()
public User findUserByName(@RequestParam("name") String name){
return userRepo.findByName(name);
}
這是RESTful風格API中常用的注解,用于加載URL路徑中的參數(shù)。
比如:這個請求
/user/1
,就可以使用
@PathVariable
來加載URL中的id參數(shù)。
@GetMapping("/user/{id}")
@ResponseBody()
public User findUserById(@PathVariable("id") String id){
return userRepo.findById(id);
}
這個注解用于加載URL中用
;
分割的參數(shù),雖然我們用的并不是很多,但一些國外系統(tǒng)有提供這類API參數(shù)。
比如:這個請求
/books/reviews;isbn=1234;topN=5;
,就可以使用
@MatrixVariable
來加載URL中用
;
分割的參數(shù)。
@GetMapping("/books/reviews")
@ResponseBody()
public List getBookReviews(
@MatrixVariable String isbn, @MatrixVariable Integer topN) {
return bookReviewsLogic.getTopNReviewsByIsbn(isbn, topN);
}
這也是最常用的一個注解,用于加載POST/PUT請求的復雜請求體(也叫:payload)。比如,客戶端需要提交一個復雜數(shù)據(jù)的時候,就要將這些數(shù)據(jù)放到請求體中,然后服務端用
@RequestBody
來加載請求體中的數(shù)據(jù)。
@PostMapping("/add")
public boolean addAccounts(@RequestBody List accounts) throws SQLException {
accounts.stream().forEach(a -> {
a.setCreatedOn(Timestamp.from(Instant.now()));
a.setLastLogin(Timestamp.from(Instant.now()));
});
return notificationLogic.addAccounts(accounts);
}
@RequestHeader
注解用來加載請求頭中的數(shù)據(jù),一般在業(yè)務系統(tǒng)中不太使用,但在基礎設施的建設中會比較常用,比如傳遞分布式系統(tǒng)的TraceID等。
用法也很簡單,假設我們將鑒權數(shù)據(jù)存在http請求頭中,那么就可以像下面這樣用
@RequestHeader
來加載請求頭中的
Authorization
參數(shù)。
@GetMapping("/user")
@ResponseBody()
public List getUserList(@RequestHeader("Authorization") String authToken) {
return userRepo.findAll();
}
當我們需要與客戶端保持有狀態(tài)的交互時,就需要用到Cookie。此時,服務端讀取Cookie數(shù)據(jù)的時候,就可以像下面這樣用
@CookieValue
來讀取Cookie中的
SessionId
數(shù)據(jù)。
@GetMapping("/user")
@ResponseBody()
public List getUserList(@CookieValue(name = "SessionId") String sessionId) {
return userRepo.findAll();
}
好了,今天的分享就到這里。這些方式你都知道嗎?如果有學到新知識,歡迎點贊支持。如果你還知道其他方式,也歡迎評論分享。如果您學習過程中如遇困難?可以加入我們超高質量的Spring技術交流群,參與交流與討論,更好的學習與進步!更多Spring Boot教程可以點擊直達!,歡迎收藏與轉發(fā)支持!
小編推薦閱讀歡迎關注我的公眾號:程序猿DD。第一時間了解前沿行業(yè)消息、分享深度技術干貨、獲取優(yōu)質學習資源
本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)