首页 > 其他分享 >Spring Boot中的 6 种API请求参数读取方式

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

时间:2024-05-23 10:18:19浏览次数:31  
标签:return 请求 Spring Boot name API 参数 加载

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

接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到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();
}

@CookieValue

当我们需要与客户端保持有状态的交互时,就需要用到Cookie。此时,服务端读取Cookie数据的时候,就可以像下面这样用@CookieValue来读取Cookie中的SessionId数据

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

好了,今天的分享就到这里。这些方式你都知道吗?如果有学到新知识,欢迎点赞支持。如果你还知道其他方式,也欢迎评论分享。如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群,参与交流与讨论,更好的学习与进步!更多Spring Boot教程可以点击直达!,欢迎收藏与转发支持!

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

标签:return,请求,Spring,Boot,name,API,参数,加载
From: https://www.cnblogs.com/didispace/p/18207788

相关文章

  • spring-xml文件头
    1.beans<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.sp......
  • keycloak~正确让api接口支持跨域
    相关参考https://leejjon.medium.com/how-to-allow-cross-origin-requests-in-a-jax-rs-microservice-d2a6aa2df484https://stackoverflow.com/questions/28065963/how-to-handle-cors-using-jax-rs-with-jerseyhttps://keycloak.discourse.group/t/cors-problem-in-custom-re......
  • 讲一下什么是Spring
    Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。主要由以下几个模块组成:SpringCore:核心类库,提供I......
  • Spring框架中都用到了哪些设计模式?
    这是一道相对有难度的题目,你不仅要回设计模式,还要知道每个设计模式在Spring中是如何使用的。简单工厂模式:Spring中的BeanFactory就是简单工厂模式的体现。根据传入一个唯一的标识来获得Bean对象,但是在传入参数后创建还是传入参数前创建,要根据具体情况来定。工厂模式:Spring......
  • wpf 动画显示隐藏_[UWP]用Win2D和CompositionAPI实现文字的发光效果,并制作动画
    weixin_39880899于2020-12-1109:26:23发布阅读量521 收藏点赞数文章标签: wpf动画显示隐藏  1.成果 献祭了周末的晚上,成功召唤出了上面的番茄钟。正当我在感慨“不愧是Shadow大人,这难道就是传说中的五彩斑斓的黑?”“那才不是什么阴影效果,那是......
  • ANNOVA test (one-way test and two-way test and bootstrapping)
    对于ANNOVA的理解什么情况下可以使用annova:Morethan2populations对于多种不同药物对于某种疾病的效果的研究;比较不同国家指标的研究Morethan1predictivevariable(factor)锻炼和饮食对于健康的影响;effectofgeneticbackgroundanddrugsonstresslevels如果是......
  • Spring6日志
    JakartaCommonsLoggingAPI是一种Java日志记录抽象层,它允许开发者在运行时插入所需的日志框架,如Log4j、JavaUtilLogging、SLF4J等。该API提供了一个简单的日志记录接口,使得开发者无需关心底层使用的具体日志框架。使用JakartaCommonsLoggingAPI的好处包括:灵......
  • Spring Boot —— Spring Security
    引入依赖Springboot版本2.7.6<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.repo......
  • 【DRF-03】rest-framework之APIView
    安装djangorestframeworkpipinstalldjangorestframework基本流程:url--》视图类--》执行dispatch方法fromrest_framework.viewsimportAPIViewfromrest_framework.responseimportResponseclassTestView(APIView):defdispatch(self,request,*args,*......
  • RestFul API风格(规范)
     在现代web开发中,API(应用程序编程接口)扮演着至关重要的角色。它们使得不同的应用程序能够彼此通信,共享数据和功能。在众多API设计风格中,RESTful风格因其简洁性和高效性而备受推崇。本文将带你深入了解RESTful风格,探索其基本原则和最佳实践。 1.什么是RESTful风......