当前位置: 首页 > news >正文

前端传参+后端接参对照

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-TypeURL 路径参数@GetMapping("/api/test/{id}"),URL 要写 /api/test/123
@RequestBodyapplication/jsonJSON 格式,raw 模式,post body 传参专门接收 JSON 格式,适合复杂对象、数组传递
@ModelAttributeapplication/x-www-form-urlencodedmultipart/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=12
  • POST: application/x-www-form-urlencoded
    name=Tom&age=12
    

2️⃣ @PathVariable

@GetMapping("/test/{id}")
public String test(@PathVariable Long id)

前端传参

  • URL: /test/123

3️⃣ @RequestBody

@PostMapping("/test")
public String test(@RequestBody User user)

前端传参

  • POST: application/json
{
  "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=Tomapplication/x-www-form-urlencoded@RequestParam / @PathVariable
表单提交 key=valueapplication/x-www-form-urlencoded@RequestParam / @ModelAttribute
JSON {"id":1,"name":"Tom"}application/json@RequestBody
文件上传multipart/form-dataMultipartFile / @RequestPart
文件 + JSONmultipart/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

相关文章:

  • java项目40分钟后token失效问题排查(40分钟后刷新页面白屏)
  • Qt for WebAssembly程序中文乱码问题处理过程
  • LLVM学习-- 构建和安装
  • Leetcode 3485. Longest Common Prefix of K Strings After Removal
  • 较为完善的搜索函数
  • LangChain 动态任务分发:开启大模型任务流的巅峰之术(三)
  • CRMEB标准版/开源版商城系统【遇坑解决】
  • 3.5 二分查找专题:LeetCode 852. 山脉数组的峰值
  • 单片机自学总结
  • 如何搭建一个安全经济适用的TRS交易平台?
  • Linkreate wordpressAI插件 24小时自动生成原创图文,新增从百度、必应搜索引擎自动获取相关下拉关键词
  • SpringBoot第三站(4):配置嵌入式服务器使用外置的Servlet容器
  • LeetCode56☞合并区间
  • 超参数优化算法:scikit-opt库、Scikit-Optimize库
  • GPU视频编解码:X86 VideoProcessFrame 视频编解码入门(二)
  • Git提交前时间检查
  • Golang | 每日一练 (6)
  • Mysql 安装指南(小白入门)
  • 基于FPGA轨道交通6U机箱CPCI脉冲板板卡
  • vs2017版本与arcgis10.1的ArcObject SDK for .NET兼容配置终结解决方案
  • 卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 牛市早报|国家发改委:将推出做好稳就业稳经济推动高质量发展若干举措
  • 加拿大驾车撞人事件遇难人数升到11人
  • 原创话剧风向标!这个展演上《大宅门》《白鹿原》先后上演
  • 滨江集团去年营收约691亿元,尚未结算的预收房款1253亿元
  • 民航局答澎湃:督促各单位进一步完善航班大面积延误和大面积备降应急处置预案