✅ Java 后端参数接收注解 & 前端传参格式对照
后端注解 前端 Content-Type 前端传参方式 说明 @RequestParamapplication/x-www-form-urlencodedURL参数 / form表单提交 / Postman form-data 常用于 key=value 形式的参数;适合少量简单参数 @RequestParamURL拼接 /api/test?id=123&name=abcGet/Post 请求都行,参数在 query string @PathVariable不关心 Content-Type URL 路径参数 @GetMapping("/api/test/{id}"),URL 要写 /api/test/123@RequestBodyapplication/jsonJSON 格式,raw 模式,post body 传参 专门接收 JSON 格式,适合复杂对象、数组传递 @ModelAttributeapplication/x-www-form-urlencoded 或 multipart/form-datakey=value 的 form-data,或表单提交 接收 form-data 或表单数据,会自动封装为对象 @RequestPartmultipart/form-data文件上传,配合 JSON、表单混合传递 用于上传文件或文件 + 数据的组合提交(MultipartFile 接收) MultipartFilemultipart/form-dataform-data 方式上传文件 专门处理文件上传 HttpServletRequest / HttpServletResponse不关心 Content-Type 一般用于文件下载、复杂定制化请求 原生的请求、响应操作,常见于流下载、session处理
✅ 详细解释
1️⃣ @RequestParam
@GetMapping ( "/test" )
public String test ( @RequestParam String name, @RequestParam Integer age)
前端传参
GET : /test?name=Tom&age=12POST : application/x-www-form-urlencodedname=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 / @ModelAttributeJSON {"id":1,"name":"Tom"} application/json@RequestBody文件上传 multipart/form-dataMultipartFile / @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