✅ Java 后端参数接收注解 & 前端传参格式对照
后端注解 前端 Content-Type 前端传参方式 说明 @RequestParam
application/x-www-form-urlencoded
URL参数 / form表单提交 / Postman form-data 常用于 key=value 形式的参数;适合少量简单参数 @RequestParam
URL拼接 /api/test?id=123&name=abc
Get/Post 请求都行,参数在 query string @PathVariable
不关心 Content-Type URL 路径参数 @GetMapping("/api/test/{id}")
,URL 要写 /api/test/123
@RequestBody
application/json
JSON 格式,raw 模式,post body 传参 专门接收 JSON 格式,适合复杂对象、数组传递 @ModelAttribute
application/x-www-form-urlencoded
或 multipart/form-data
key=value 的 form-data,或表单提交 接收 form-data 或表单数据,会自动封装为对象 @RequestPart
multipart/form-data
文件上传,配合 JSON、表单混合传递 用于上传文件或文件 + 数据的组合提交(MultipartFile 接收) MultipartFile
multipart/form-data
form-data 方式上传文件 专门处理文件上传 HttpServletRequest
/ HttpServletResponse
不关心 Content-Type 一般用于文件下载、复杂定制化请求 原生的请求、响应操作,常见于流下载、session处理
✅ 详细解释
1️⃣ @RequestParam
@GetMapping ( "/test" )
public String test ( @RequestParam String name, @RequestParam Integer age)
前端传参
GET : /test?name=Tom&age=12
POST : application/x-www-form-urlencoded
name=Tom&age=12
2️⃣ @PathVariable
@GetMapping ( "/test/{id}" )
public String test ( @PathVariable Long id)
前端传参
3️⃣ @RequestBody
@PostMapping ( "/test" )
public String test ( @RequestBody User user)
前端传参
{ "name" : "Tom" , "age" : 12
}
常用于前端传 JSON 对象、数组 🚨 如果你忘记 Content-Type: application/json
,Spring 会报错!
4️⃣ @ModelAttribute
@PostMapping ( "/test" )
public String test ( @ModelAttribute User user)
前端传参
application/x-www-form-urlencoded
name=Tom&age=12
或 multipart/form-data
(主要用在有文件上传时)
5️⃣ @RequestPart
@PostMapping ( "/upload" )
public String upload ( @RequestPart ( "file" ) MultipartFile file, @RequestPart ( "user" ) String userJson)
前端传参
multipart/form-data
文件 + JSON 同时上传 (需要自己在前端 form-data
里传 JSON 字符串,再后端反序列化)
6️⃣ MultipartFile
@PostMapping ( "/upload" )
public String upload ( @RequestParam ( "file" ) MultipartFile file)
前端传参
multipart/form-data
直接在 form-data
里传文件。
✅ 常见前端传参方式 & 后端适配
前端请求 Content-Type 后端接收注解 URL传参 /api?id=1&name=Tom
无
或 application/x-www-form-urlencoded
@RequestParam
/ @PathVariable
表单提交 key=value
application/x-www-form-urlencoded
@RequestParam
/ @ModelAttribute
JSON {"id":1,"name":"Tom"}
application/json
@RequestBody
文件上传 multipart/form-data
MultipartFile
/ @RequestPart
文件 + JSON multipart/form-data
@RequestPart
✅ 总结下选择建议!
场景 用法 简单的参数 @RequestParam
+ application/x-www-form-urlencoded
路径变量(RESTful) @PathVariable
复杂对象/数组(JSON) @RequestBody
+ application/json
表单传对象 @ModelAttribute
+ application/x-www-form-urlencoded
文件上传或混合参数 MultipartFile
/ @RequestPart
+ multipart/form-data
文件下载/流操作 HttpServletResponse