SpringBoot中REST API 接口传参的实现
作者:Jimmy
我们在开发 REST API
的过程中,经常需要传递参数,那么,我们可以怎么做呢?本文,我们将探讨 Spring Boot
项目中三种传递参数的方式,如下👇
@PathVariable
@RequestParam
@RequestBody
什么是 REST API
?REST API 是基于 REST
架构原则设计的一组规范和约定,用于在不同软件系统之间进行通信。
测试环境
macOs Monterey 12.4 (Apple M1)
IntelliJ IDEA 2021.2.2(Ultimate Edition)
java --version (17.0.7)
maven version 3.9.2
Spring Boot version 3.2.0
Postman version 8.12.1
相关依赖
这里我们不考虑数据库、security
等的引入,相关的依赖比较简单,如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
spring-boot-starter-web
是用于开发基于 Spring Boot
的 Web
应用程序的起步依赖,支持 RESTful API
的开发。
PS:当然,我们后期可以引入数据库、
JWT
等操作,但是,这个知识点并不是本文的重点
@PathVariable 注解
@PathVariable
注解用于从 URI
中提取模版变量,并将其绑定到方法的参数上。如下:
@RestController @RequestMapping("/api") public class HelloController { @GetMapping("/hello/{name}") public String sayHello(@PathVariable String name) { return "Hello, " + name + "!"; } }
启动程序,在 postman
中输入 http://localhost:8080/api/hello/Jimmy
,即可看到输出 Hello, Jimmy!
的返回信息。如下图👇
上面的 @GetMapping("/hello/{name}")
和 @PathVariable String name
其实是省略了同名的写法,如果 GetMapping
中路径变量和方法的参数变量不同名,我们需要做下调整。
@RestController @RequestMapping("/api") public class HelloController { @GetMapping("/hello/{username}") public String sayHello(@PathVariable("username") String name) { return "Hello, " + name + "!"; } }
上面的运行效果跟截图展示的效果一样。
@RequestParam 注解
@RequestParam
注解将 HTTP
请求中的参数值映射到方法的参数上。如下示范:
@RestController @RequestMapping("/api") public class ParamController { @RequestMapping("/param") public String requestParamDemo(@RequestParam String name) { return "Hello, " + name + "!"; } }
我们在 postman
上请求 http://localhost:8080/api/param?name=Jimmy
,可看到输出 Hello, Jimmy!
的字样。
上面的代码中传参还可以是下面的这种推荐写法:
@RestController @RequestMapping("/api") public class ParamController { @RequestMapping("/param") public String requestParamDemo(@RequestParam("username") String name) { return "Hello, " + name + "!"; } }
这个时候,我们在 postman
上传递的 username
值,其实就是赋予了变量 name
,如下👇
@RequestBody 注解
@RequestBody
注解 注解用于处理 HTTP
请求体的内容映射到方法的参数上。使用 @RequestBody
注解可以将请求体的内容转化为相应的 Java
对象,以便在方法中处理。如下例子:
我们先创建一个 bean
类:
@Setter @Getter public class Person { String username; }
然后创建一个 controller
:
@RestController @RequestMapping("/api") public class requestBodyController { @RequestMapping("/request-body") public String requestBodyDemo(@RequestBody Person person) { return "Hello, " + person.getUsername() + "!"; } }
在 postman
上请求接口 http://localhost:8080/api/request-body
,在 Body
请求输入 json
数据,如下:
总结
本文中,我们一起学习了 @PathVariable
注解、RequestParam
注解和 RequestBody
注解来处理 HTTP
请求的传递参数。本文中的案例,我们都是使用了 Get
请求来模拟,但是实际上,RequestBody
用得更多的是在 POST
新增记录和 PUT
修改记录的情况。三个注解搭配使用,完成参数的传递。
到此这篇关于SpringBoot中REST API 接口传参的实现的文章就介绍到这了,更多相关SpringBoot REST API 接口传参内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!