SpringBoot常用请求方式及请求参数传递的方式
作者:Liuzhengyue_
本文给大家介绍SpringBoot常用请求方式及请求参数传递的方式,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
SpringBoot中常用的请求方式
@RequestMapping:不限制请求方式
@GetMapping:获取数据,参数拼接在url的?之后,参数名=参数值多个参数之间用&符号间隔,可缓存
@PostMapping:提交数据,参数不可以直接看见(开发者工具/抓包)
@PutMapping:修改数据
@DeleteMapping:删除数据
关于请求参数的传递
方法一:@PathVariable —— 获取“路径参数”
- 适合场景:URL 路径中有变量,比如
/user/1001
- 例子:
@GetMapping("/user/{id}") public String getUserById(@PathVariable Long id) { // id 就是路径里的 1001 return "用户ID:" + id; }
- 路径转化说明:
- 客户端请求:
GET /user/1001
- 方法参数:
@PathVariable Long id
自动获得1001
- 客户端请求:
方法二:@RequestParam —— 获取“查询参数”或“表单参数”
- 适合场景:URL 问号后的参数,比如
/user?name=Tom
- 例子:
@GetMapping("/user") public String getUserByName(@RequestParam String name) { // name 就是 URL 里的 Tom return "用户名:" + name; }
- 路径转化说明:
- 客户端请求:
GET /user?name=Tom
- 方法参数:
@RequestParam String name
自动获得Tom
- 客户端请求:
方法三:@RequestBody —— 获取“请求体参数”(多用于 JSON)
- 适合场景:客户端 POST JSON 数据,如注册用户
- 例子:
@PostMapping("/user/add") public String addUser(@RequestBody User user) { // user 对象自动映射 JSON 里的数据 return "新增用户:" + user.getName(); }
- 路径转化说明:
- 客户端请求:
POST /user/add
,请求体为{"name":"Tom","age":20}
- 方法参数:
@RequestBody User user
自动映射
- 客户端请求:
方法四:Spring Boot 的“隐式参数绑定”机制
核心知识
Spring MVC(Spring Boot 2/3 都适用)有一个自动参数绑定机制,叫做 隐式绑定(Implicit Binding)。
- 如果你的 Controller 方法参数是简单类型(如
String
、int
、long
),而没有添加注解,Spring 会自动尝试从请求的参数(QueryString、Form表单)中取同名值,并赋值给方法参数。
例子说明
前端请求:
POST /user/register
- Content-Type:
application/x-www-form-urlencoded
- 请求体:
username=Tom&password=123456
Controller 方法(如你图片里的):
@PostMapping("/register") public Result register(String username, String password) { // Spring 会自动把请求体中的 username、password 赋值过来 }
详细步骤:隐式绑定是怎么工作的?
步骤 | 说明 |
---|---|
1 | 前端页面表单用 POST 提交,参数名和方法参数名一致 |
2 | Spring 根据 Content-Type 检查是表单提交 |
3 | 没有 @RequestBody/@ModelAttribute/@RequestParam 注解时, |
Spring 会自动把请求参数(key)和方法参数名匹配,赋值进来 | |
4 | 如果参数名不一致,则赋值失败,值为 null |
总结:只要表单的参数名和方法参数名一致,就能自动绑定。
路径转化详解
举例说明:
- URL:
http://localhost:8080/user/1001?name=Tom
- 路径参数:
/user/1001
→@PathVariable Long id
- 查询参数:
?name=Tom
→@RequestParam String name
- 路径参数:
- JSON 请求体(POST):
- URL:
/user/add
- body:
{"name":"Tom","age":20}
→@RequestBody User user
- URL:
常见场景和最佳实践
场景 | 推荐方式 | 说明 |
---|---|---|
简单表单(2-3个参数) | 可以省略注解,直接用同名参数 | 省事,代码少 |
参数较多 | 推荐用 @ModelAttribute 封装对象 | 代码更整洁,可扩展性好 |
JSON 请求体 | 必须用 @RequestBody | 否则接收不到数据 |
参数名不一致 | 必须用 @RequestParam("xxx") | 明确映射关系 |
到此这篇关于SpringBoot请求方式及请求参数传递的方式的文章就介绍到这了,更多相关SpringBoot请求传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!