使用Spring Boot開發API的時候,讀取請求參數是服務端編碼中最基本的一項操作,Spring Boot中也提供了多種機制來滿足不同的API設計要求。
接下來,就通過本文,為大家總結6種常用的請求參數讀取方式。如果你發現自己知道的不到6種,那么趕緊來查漏補缺一下。如果你知道的不止6種,那么告訴大家,一起互相學習一下吧~
這是最最最最最最常用的一個了吧,用來加載URL中?之后的參數。
比如:這個請求/user?name=didispace 就可以如下面這樣,使用@RequestParam來加載URL中的name參數
@GetMapping("/user")@ResponseBody()public User findUserByName(@RequestParam("name") String name){ return userRepo.findByName(name);}
這是RESTful風格API中常用的注解,用來加載URL路徑中的參數
比如:這個請求/user/1 就可以如下面這樣,使用@PathVariable來加載URL中的id參數
@GetMapping("/user/{id}")@ResponseBody()public User findUserById(@PathVariable("id") String id){ return userRepo.findById(id);}
這個我們用的并不是很多,但一些國外系統有提供這類API參數,這種API的參數通過;分割。
比如:這個請求/books/reviews;isbn=1234;topN=5; 就可以如下面這樣,使用@MatrixVariable來加載URL中用;分割的參數
@GetMapping("/books/reviews")@ResponseBody()public List<BookReview> getBookReviews( @MatrixVariable String isbn, @MatrixVariable Integer topN) { return bookReviewsLogic.getTopNReviewsByIsbn(isbn, topN);}
這也是最常用的一個注解,用來加載POST/PUT請求的復雜請求體(也叫:payload)。比如,客戶端需要提交一個復雜數據的時候,就要將這些數據放到請求體中,然后服務端用@RequestBody來加載請求體中的數據
@PostMapping("/add")public boolean addAccounts(@RequestBody List<Account> accounts) throws SQLException { accounts.stream().forEach(a -> { a.setCreatedOn(Timestamp.from(Instant.now())); a.setLastLogin(Timestamp.from(Instant.now())); }); return notificationLogic.addAccounts(accounts);}
@RequestHeader注解用來加載請求頭中的數據,一般在業務系統中不太使用,但在基礎設施的建設中會比較常用,比如傳遞分布式系統的TraceID等。用法也很簡單,比如,假設我們將鑒權數據存在http請求頭中,那么就可以像下面這樣用@RequestHeader來加載請求頭中的Authorization參數
@GetMapping("/user")@ResponseBody()public List<User> getUserList(@RequestHeader("Authorization") String authToken) { return userRepo.findAll();}
當我們需要與客戶端保持有狀態的交互時,就需要用到Cookie。此時,服務端讀取Cookie數據的時候,就可以像下面這樣用@CookieValue來讀取Cookie中的SessionId數據
@GetMapping("/user")@ResponseBody()public List<User> getUserList(@CookieValue(name = "SessionId") String sessionId) { return userRepo.findAll();}
好了,今天的分享就到這里。這些方式你都知道嗎?
https://www.didispace.com/article/spring-boot/spring-boot-rest-api-6-ways-to-pass-params.html
本文鏈接:http://www.www897cc.com/showinfo-26-91681-0.htmlSpring Boot中的六種API請求參數讀取方式
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com