Spring Boot中的 6 种API请求参数读取方式

avatar
作者
筋斗云
阅读量:0

 ​

 博客主页:     南来_北往

🔥系列专栏:Spring Boot实战


前言

在利用Spring Boot框架开发应用程序接口时,从客户端请求中提取参数是一项基础而关键的任务。Spring Boot为了迎合各式各样的接口设计需求,提供了多样化的机制以供开发者选择。本文将详细梳理六种主流的请求参数读取方法。若您所掌握的方式尚未达到此数目,不妨参考本文以填补知识的空白;倘若您所了解的途径超出六种,欢迎分享您的见解,共同进步。

@RequestParam

该注解用于处理URL中的查询参数,即URL中?后面的参数。例如,在请求/user?name=didispace中,使用@RequestParam("name")可以把"name"参数的值传递给方法参数。

@GetMapping("/user") @ResponseBody() public User findUserByName(@RequestParam("name") String name){      return userRepo.findByName(name); }

@PathVariable

此注解用于获取RESTful风格API路径中的变量。例如,对于路径/user/1,服务器端可以用@PathVariable("id")来获取URL中的id值。

@GetMapping("/user/{id}") @ResponseBody() public User findUserById(@PathVariable("id") String id){      return userRepo.findById(id); }

@MatrixVariable

这个注解用于解析矩阵URI中的变量,矩阵参数出现在路径后面并用分号(;)隔开。例如,请求/books/reviews;isbn=1234;topN=5;可以通过@MatrixVariable加载并解析这些参数。

@GetMapping("/books/reviews") @ResponseBody() public List<BookReview> getBookReviews(    @MatrixVariable String isbn,  @MatrixVariable Integer topN) {   return bookReviewsLogic.getTopNReviewsByIsbn(isbn, topN); }

@RequestBody

此注解常用于处理POST或PUT请求中的复杂数据负载,即请求体中的数据。例如,客户端发送JSON格式的数据,服务器端可以用@RequestBody接收并转换为对应的Java对象。

@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

此注解用于获取HTTP请求头中的信息。比如可以将请求头中的Authorization信息通过@RequestHeader("Authorization")注入到方法参数中。

@GetMapping("/user") @ResponseBody() public List<User> getUserList(@RequestHeader("Authorization") String authToken) {      return userRepo.findAll(); }

@CookieValue

当需要与客户端保持一些状态信息时,可以使用Cookie。@CookieValue注解用于获取特定Cookie项的值。这对于有状态的会话管理非常有用。

@GetMapping("/user") @ResponseBody() public List<User> getUserList(@CookieValue(name = "SessionId") String sessionId) {      return userRepo.findAll(); }

总之,这六种参数读取方式极大地增强了Spring Boot应用对不同类型请求的处理能力,使得开发人员能够根据不同的业务需求选择最合适的数据传递方式。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!