使用Spring Boot開發(fā)API的時(shí)候,讀取請(qǐng)求參數(shù)是服務(wù)端編碼中最基本的一項(xiàng)操作,Spring Boot中也提供了多種機(jī)制來滿足不同的API設(shè)計(jì)要求。 接下來,就通過本文,為大家總結(jié)6種常用的請(qǐng)求參數(shù)讀取方式。如果你發(fā)現(xiàn)自己知道的不到6種,那么趕緊來查漏補(bǔ)缺一下。如果你知道的不止6種,那么告訴
在Spring Boot開發(fā)API時(shí),讀取請(qǐng)求參數(shù)是服務(wù)端編碼中最基本的操作之一。Spring Boot提供了多種機(jī)制來滿足不同的API設(shè)計(jì)要求。
接下來,我們將總結(jié)6種常用的請(qǐng)求參數(shù)讀取方式。如果你發(fā)現(xiàn)自己知道的不到6種,那么趕緊來查漏補(bǔ)缺一下。如果你知道的不止6種,那么告訴大家,一起互相學(xué)習(xí)一下吧~
這是最常用的一個(gè)注解,用于加載URL中
?
之后的參數(shù)。
比如:這個(gè)請(qǐng)求
/user?name=didispace
,就可以使用
@RequestParam
來加載URL中的name參數(shù)。
@GetMapping("/user")
@ResponseBody()
public User findUserByName(@RequestParam("name") String name){
return userRepo.findByName(name);
}
這是RESTful風(fēng)格API中常用的注解,用于加載URL路徑中的參數(shù)。
比如:這個(gè)請(qǐng)求
/user/1
,就可以使用
@PathVariable
來加載URL中的id參數(shù)。
@GetMapping("/user/{id}")
@ResponseBody()
public User findUserById(@PathVariable("id") String id){
return userRepo.findById(id);
}
這個(gè)注解用于加載URL中用
;
分割的參數(shù),雖然我們用的并不是很多,但一些國(guó)外系統(tǒng)有提供這類API參數(shù)。
比如:這個(gè)請(qǐng)求
/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);
}
這也是最常用的一個(gè)注解,用于加載POST/PUT請(qǐng)求的復(fù)雜請(qǐng)求體(也叫:payload)。比如,客戶端需要提交一個(gè)復(fù)雜數(shù)據(jù)的時(shí)候,就要將這些數(shù)據(jù)放到請(qǐng)求體中,然后服務(wù)端用
@RequestBody
來加載請(qǐng)求體中的數(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
注解用來加載請(qǐng)求頭中的數(shù)據(jù),一般在業(yè)務(wù)系統(tǒng)中不太使用,但在基礎(chǔ)設(shè)施的建設(shè)中會(huì)比較常用,比如傳遞分布式系統(tǒng)的TraceID等。
用法也很簡(jiǎn)單,假設(shè)我們將鑒權(quán)數(shù)據(jù)存在http請(qǐng)求頭中,那么就可以像下面這樣用
@RequestHeader
來加載請(qǐng)求頭中的
Authorization
參數(shù)。
@GetMapping("/user")
@ResponseBody()
public List getUserList(@RequestHeader("Authorization") String authToken) {
return userRepo.findAll();
}
當(dāng)我們需要與客戶端保持有狀態(tài)的交互時(shí),就需要用到Cookie。此時(shí),服務(wù)端讀取Cookie數(shù)據(jù)的時(shí)候,就可以像下面這樣用
@CookieValue
來讀取Cookie中的
SessionId
數(shù)據(jù)。
@GetMapping("/user")
@ResponseBody()
public List getUserList(@CookieValue(name = "SessionId") String sessionId) {
return userRepo.findAll();
}
好了,今天的分享就到這里。這些方式你都知道嗎?如果有學(xué)到新知識(shí),歡迎點(diǎn)贊支持。如果你還知道其他方式,也歡迎評(píng)論分享。如果您學(xué)習(xí)過程中如遇困難?可以加入我們超高質(zhì)量的Spring技術(shù)交流群,參與交流與討論,更好的學(xué)習(xí)與進(jìn)步!更多Spring Boot教程可以點(diǎn)擊直達(dá)!,歡迎收藏與轉(zhuǎn)發(fā)支持!
小編推薦閱讀歡迎關(guān)注我的公眾號(hào):程序猿DD。第一時(shí)間了解前沿行業(yè)消息、分享深度技術(shù)干貨、獲取優(yōu)質(zhì)學(xué)習(xí)資源
機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)