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

 ​

 博客主页:     南来_北往

🔥系列专栏: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应用对不同类型请求的处理能力,使得开发人员能够根据不同的业务需求选择最合适的数据传递方式。

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值