SpringBoot Controller参数接收全解析:@PathVariable, @RequestParam, @Requ...
97 浏览量
更新于2023-03-16
收藏 70KB PDF 举报
本文主要探讨了在SpringBoot的Controller中如何接收不同类型的参数,包括请求路径参数、查询参数以及请求体中的参数。
首先,我们来看请求路径参数。这类参数是通过URL路径直接传递的,通常与`@PathVariable`注解一起使用。例如,当URL为`http://localhost:8080/demo/123`时,`@PathVariable`可以捕获到路径中的`123`。在给定的示例中,`@GetMapping("/demo/{id}")`方法中的`@PathVariable(name="id") String id`就用来接收这个路径变量。这种方法适用于需要通过URL唯一标识资源的情况。
其次,查询参数是通过URL问号`?`后面传递的,如`http://localhost:8080/demo?name=suki_rong`。在SpringBoot中,我们可以使用`@RequestParam`注解来获取这些参数。示例代码展示了如何通过`@RequestParam(name="name") String name`获取名为`name`的查询参数。这种方法适合传递多个可选参数,或者参数不构成URL的一部分时使用。
接下来,我们转向请求体参数。在POST请求中,通常会将数据放在请求体中。SpringBoot提供了`@RequestBody`注解来处理这种情况。例如,当发送一个JSON对象`{"name":"suki_rong","age":18,"hobby":"programming"}`时,`@PostMapping(path="/demo1")`中的`@RequestBody Person person`将会自动将JSON转换为Person对象。如果请求体内容是简单的键值对,可以使用`Map<String, String>`来接收。这使得Controller能够处理各种类型的数据。
另外,如果请求体的数据结构与Java对象完全匹配,那么可以省略`@RequestBody`注解,直接在方法参数中声明对象类型。例如,`@PostMapping(path="/demo2")`的`demo2(Person person)`方法,SpringBoot会尝试将请求体自动转换为Person对象,这依赖于Jackson库或其他类似库来完成反序列化。
总结起来,SpringBoot的Controller可以通过`@PathVariable`、`@RequestParam`和`@RequestBody`等注解灵活地处理不同的参数来源。了解并熟练掌握这些接收参数的方式,有助于构建功能丰富的RESTful API服务,满足各种业务需求。在实际开发中,应根据具体情况选择最合适的参数接收方式,以实现高效且易于维护的代码。
2020-08-25 上传
2020-08-28 上传
2021-03-12 上传
2020-04-08 上传
2024-07-15 上传
2023-03-16 上传
2024-03-09 上传
2023-08-09 上传
weixin_38612304
- 粉丝: 4
- 资源: 924
最新资源
- turtle-logo:用于Turtle徽标编程语言的MakeCode扩展
- screepsmod-mongo:用MongoDB和Redis替换LokiJS
- Personal-Website:我的个人作品集展示了我的经验和项目
- elirehema:自述文件
- EightInSeven:Minecraft 1.8 1.7.10 的可见性行走算法
- illustrator-scripts-for-mobile:Illustrator脚本的集合,这些脚本可将图层或画板导出到不同密度的PNG(iOS Retina Display,Android设备等)
- Andron
- 安卓电视机大屏显示ui设计
- Assertions:作证断言集
- 正常运行时间:st stitcombe的正常运行时间监控器和状态页面,由@upptime提供支持
- mern:Mern edu应用
- 行业文档-设计装置-一种降低混合机物料残留的方法.zip
- nvim:这是我的nvim点文件。 它已经被配置为在您的系统中自动安装vim-plug
- 疯狂java讲义源码下载-The-Way-I-Learn-Android:我的Android学习之路,主要记录我的android的学习过程,时
- html_rocketseat
- Python库 | FuXi-1.0_rc.dev-py2.5.egg