ITPub博客

首页 > IT基础架构 > 网络安全 > Spring Boot中的 5 种API请求参数读取方式

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

原创 网络安全 作者:松前卡气 时间:2025-04-11 09:43:58 0 删除 编辑

使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。


接下来,就通过本文,为大家总结5种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那么告诉大家,一起互相学习一下吧~


@RequestParam


这是最最最最最最常用的一个了吧,用来加载URL中?之后的参数。


比如:这个请求/user?name=didispace 就可以如下面这样,使用@RequestParam来加载URL中的name参数


     @GetMapping("/user")

     @ResponseBody()

     public User findUserByName(@RequestParam("name") String name){ 

         return userRepo.findByName(name);

     }



@PathVariable


这是RESTful风格API中常用的注解,用来加载URL路径中的参数


比如:这个请求/user/1 就可以如下面这样,使用@PathVariable来加载URL中的id参数


     @GetMapping("/user/{id}")

     @ResponseBody()

     public User findUserById(@PathVariable("id") String id){ 

         return userRepo.findById(id);

     }


@MatrixVariable


这个我们用的并不是很多,但一些国外系统有提供这类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);

     }


@RequestBody


这也是最常用的一个注解,用来加载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


@RequestHeader注解用来加载请求头中的数据,一般在业务系统中不太使用,但在基础设施的建设中会比较常用,比如传递分布式系统的TraceID等。用法也很简单,比如,假设我们将鉴权数据存在http请求头中,那么就可以像下面这样用@RequestHeader来加载请求头中的Authorization参数


     @GetMapping("/user")

     @ResponseBody()

     public List<User> getUserList(@RequestHeader("Authorization") String authToken) {

          return userRepo.findAll();

     }



好了,今天的分享就到这里。这些方式你都知道吗?如果有学到新知识,欢迎点赞支持。如果你还知道其他方式,也欢迎评论分享。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70044235/viewspace-3080632/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2025-03-11

  • 博文量
    36
  • 访问量
    41915