SpringBoot中API接口參數(shù)獲取方式小結(jié)
引言
在Spring Boot中,API接口參數(shù)可以通過多種方式獲取,具體取決于你定義的API接口參數(shù)類型(如路徑參數(shù)、查詢參數(shù)、請(qǐng)求體參數(shù)、請(qǐng)求頭等)。以下是一些常見的參數(shù)獲取方式以及對(duì)應(yīng)的Java樣例代碼:
1.路徑參數(shù)(Path Variable)
使用@PathVariable
注解從URL路徑中獲取參數(shù)。
@RestController @RequestMapping("/users") public class UserController { @GetMapping("/{id}") public ResponseEntity<String> getUserById(@PathVariable Long id) { // 處理邏輯 return ResponseEntity.ok("User with ID: " + id); } }
2.查詢參數(shù)(Query Parameter)
使用@RequestParam
注解從URL查詢字符串中獲取參數(shù)。
@RestController @RequestMapping("/users") public class UserController { @GetMapping("/search") public ResponseEntity<String> searchUsers(@RequestParam String name) { // 處理邏輯 return ResponseEntity.ok("Searching for user with name: " + name); } // 也可以設(shè)置默認(rèn)值 @GetMapping("/searchWithDefault") public ResponseEntity<String> searchUsersWithDefault(@RequestParam(defaultValue = "John") String name) { // 處理邏輯 return ResponseEntity.ok("Searching for user with name: " + name); } }
3.請(qǐng)求體參數(shù)(Request Body)
使用@RequestBody
注解從HTTP請(qǐng)求體中獲取參數(shù),通常用于POST或PUT請(qǐng)求。
@RestController @RequestMapping("/users") public class UserController { @PostMapping("/") public ResponseEntity<String> createUser(@RequestBody User user) { // 處理邏輯 return ResponseEntity.ok("User created with name: " + user.getName()); } // 假設(shè)User類如下 static class User { private String name; // getters and setters } }
4.請(qǐng)求頭參數(shù)(Request Header)
通常不直接使用注解來獲取請(qǐng)求頭參數(shù),但可以通過HttpServletRequest
對(duì)象或@RequestHeader
注解來獲取。
使用@RequestHeader
注解:
@RestController @RequestMapping("/users") public class UserController { @GetMapping("/") public ResponseEntity<String> getUsers(@RequestHeader("Authorization") String authToken) { // 處理邏輯 return ResponseEntity.ok("Authorization token: " + authToken); } }
使用HttpServletRequest
對(duì)象:
@RestController @RequestMapping("/users") public class UserController { @GetMapping("/") public ResponseEntity<String> getUsers(HttpServletRequest request) { String authToken = request.getHeader("Authorization"); // 處理邏輯 return ResponseEntity.ok("Authorization token from HttpServletRequest: " + authToken); } }
5.@CookieValue
當(dāng)我們需要與客戶端保持有狀態(tài)的交互時(shí),就需要用到Cookie。此時(shí),服務(wù)端讀取Cookie數(shù)據(jù)的時(shí)候,就可以像下面這樣用@CookieValue
來讀取Cookie中的SessionId
數(shù)據(jù)。
@GetMapping("/user") @ResponseBody() public List<User> getUserList(@CookieValue(name = "SessionId") String sessionId) { return userRepo.findAll(); }
6.@MatrixVariable
這個(gè)我們用的并不是很多,但一些國外系統(tǒng)有提供這類API參數(shù),這種API的參數(shù)通過;分割。
比如:這個(gè)請(qǐng)求/books/reviews;isbn=1234;topN=5; 就可以如下面這樣,使用@MatrixVariable來加載URL中用;分割的參數(shù)。
@GetMapping("/books/reviews") @ResponseBody() public List<BookReview> getBookReviews( @MatrixVariable String isbn, @MatrixVariable Integer topN) { return bookReviewsLogic.getTopNReviewsByIsbn(isbn, topN); }
7.表單數(shù)據(jù)(Form Data)
對(duì)于POST請(qǐng)求中的表單數(shù)據(jù),通常可以使用@ModelAttribute或@RequestParam來獲取。但如果表單數(shù)據(jù)作為請(qǐng)求體發(fā)送(Content-Type: application/x-www-form-urlencoded),則可以直接使用@RequestParam。如果表單數(shù)據(jù)是JSON格式,則應(yīng)使用@RequestBody。
8.Servlet API的其他部分
你還可以使用HttpServletResponse、HttpSession等Servlet API的其他部分來處理請(qǐng)求和響應(yīng)。但在Spring Boot中,通常推薦使用Spring MVC提供的高級(jí)抽象來簡化開發(fā)。
注:為了正確解析請(qǐng)求體中的JSON數(shù)據(jù),需要在Spring Boot項(xiàng)目中添加適當(dāng)?shù)腏SON庫(如Jackson),并且確保請(qǐng)求的Content-Type設(shè)置為application/json。
以上就是SpringBoot中API接口參數(shù)獲取方式小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot API接口參數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaCV實(shí)現(xiàn)圖片中人臉檢測的示例代碼
這篇文章主要介紹了如何利用JavaCV實(shí)現(xiàn)圖片中人臉檢測的功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下2022-11-11java并發(fā)編程專題(六)----淺析(JUC)Semaphore
這篇文章主要介紹了java JUC)Semaphore的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07java如何實(shí)現(xiàn)postman中用x-www-form-urlencoded參數(shù)的請(qǐng)求
在Java開發(fā)中,模擬Postman發(fā)送x-www-form-urlencoded類型的請(qǐng)求是一個(gè)常見需求,本文主要介紹了如何在Java中實(shí)現(xiàn)這一功能,首先,需要通過導(dǎo)入http-client包來創(chuàng)建HTTP客戶端,接著,利用該客戶端發(fā)送Post請(qǐng)求2024-09-09springboot臨時(shí)文件存儲(chǔ)目錄配置方式
這篇文章主要介紹了springboot臨時(shí)文件存儲(chǔ)目錄配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java CompletableFuture 異步超時(shí)實(shí)現(xiàn)深入研究
這篇文章主要為大家介紹了Java CompletableFuture 異步超時(shí)實(shí)現(xiàn)深入研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02