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

前端传参+后端接参对照

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


http://www.kler.cn/a/592085.html

相关文章:

  • c++ 基础题目lambda
  • 【前端小组件实现】 鼠标经过标签元素显示,另一个元素宽度改变。float,inline-block,block
  • template mixin对装饰器设计模式的实现
  • 海康SDK协议在智联视频超融合平台中的接入方法
  • python开发订单查询功能(flask+orm bee)
  • 一文读懂 EtherNET/IP 转 Modbus RTU 网关
  • 蓝桥杯刷题day1:温度转换
  • SpacetimeDB 1.0 正式发布,Rust 编写的开源关系型数据库
  • 高并发场景下的淘宝API优化:如何设计商品数据采集系统?
  • 深入理解数据库:从概念到MySQL应用
  • docker安装node部分问题
  • Linux下OpenCFD-SCU源码编译安装及使用
  • C++反向迭代器
  • Unity导出WebGL
  • $.ajax的contentType设置及对应后端数据获取方式
  • 如何取消GitHub Copilot订阅付费?
  • 制造业数字化转型,汽车装备制造企业数字化转型案例,智能制造数字化传统制造业数字化制造业数字化转型案例
  • PyTorch深度学习框架60天进阶学习计划 - 第22天:命名实体识别实战
  • <link>标签在网页中的常见用途及与<script>标签引入资源方式的区别
  • Nodejs使用redis