前端传参+后端接参对照

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.mzph.cn/news/898230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络的框架结构

计算机网络课程知识体系框架 一、计算机网络基础概念 1.1 网络组成要素 端系统(主机、服务器)通信链路(有线/无线介质)交换设备(路由器、交换机)协议体系(TCP/IP协议簇) 1.2 网络…

塔能智慧物联节能方案:点亮城市,赋能工厂

在全球积极倡导节能减排、绿色发展的时代背景下,塔能(江苏)科技有限公司凭借其创新的智慧物联节能一体化解决方案,在城市照明和工厂节能领域取得了显著成果。该方案不仅为城市的夜晚带来了明亮且节能的照明,还为工厂的…

Laravel框架下通过DB获取数据并转为数组的方法

在Laravel框架中,获取数据库信息并将其转换为数组是一种常见的操作,特别是在处理数据导出、API响应等场景中。Laravel提供了简洁而强大的数据库抽象层,旨在简化这类操作。接下来,我们将探讨几种在Laravel中通过数据库抽象层&#…

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty 详细解释1. 基本功能2. 语法3. 示例代码示例 1:创建一个 5 的未初始化张量示例 2:创建一个 23 的未初始化张量示例 3:指定数据类型和设备 4. 注…

Linux cgroup cpuset

cpuset.c 是 Linux cgroup 的 cpuset 子系统的核心实现,这个文件的主要作用是: 实现 cgroup 的 cpuset 子系统管理进程的 CPU 和内存资源访问权限提供 CPU 和内存节点的独占功能支持层级化的资源管理提供用户空间接口来配置和查看资源限制 关键数据结构…

Tailwind CSS 学习笔记(一)

一、简介 Tailwind CSS是一个工具优先的CSS 框架,只需书写HTML 代码,无需书写CSS,即可快速构建美观的网站。 二、优点 1、简洁、规整,避免了随意取类名 Tailwind CSS 的工具类(Utility classes) 能够为你提供一套约束系统,避免让你的样式表中出现随意的取值。它让颜色、…

Python自动点击器开发教程 - 支持键盘连按和鼠标连点

Python自动点击器开发教程 - 支持键盘连按和鼠标连点 这里写目录标题 Python自动点击器开发教程 - 支持键盘连按和鼠标连点项目介绍开发环境安装依赖核心代码解析1. 键盘模拟实现2. 鼠标点击实现 开发要点使用说明注意事项优化建议打包发布项目源码开发心得参考资料成品工具 项…

Cursor插件市场打不开解决

问题现象: cursor搜索插件的时候提示错误,无法搜索安装插件 error while fetching extensions.failed to fetch 问题原因 cursor默认安装使用的并不是vs code的插件市场,国内网络有时候打不开 解决 修改插件市场地址并重启cursor 打开cur…

【DeepSeek】本地部署DeepSeek的完整教程(Ollama+Docker+Open WebUI)

本地部署DeepSeek的完整教程 文章目录 本地部署DeepSeek的完整教程写在前面技术需求详细步骤一. 安装Ollama软件二. 安装DeepSeek-R1模型三. 安装Docker软件四. 配置Web UI界面问题解决1. 打开`docker desktop`时,一直显示`Docker Engine stopped`2. 用`Docker`拉取`Open WebU…

Java创造型模式之原型模式详解

设计模式是面向对象设计中的一种标准方法,用于解决常见的设计问题。原型设计模式(Prototype Pattern)是23种经典设计模式之一,属于创建型模式,它允许通过复制现有对象来创建新对象,而不是通过构造函数或工厂…

python-leetcode 54.全排列

题目: 给定不含重复数字的数组nums,返回其所有可能的全排列,可以按任意顺序返回答案 回溯法 一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通…

python局部变量和全局变量

文章目录 1.局部变量和全局变量2.局部变量2.1 局部变量的作用2.2 局部变量的生命周期 3. 全局变量3.1 函数不能直接修改全局变量的引用3.2 在函数内部修改全局变量的值3.3 全局变量定义的位置3.4 全局变量命名的建议 1.局部变量和全局变量 (1)局部变量 …

华为中小型企业项目案例

实验目的(1) 熟悉华为交换机和路由器的应用场景 (2) 掌握华为交换机和路由器的配置方法 实验拓扑实验拓扑如图所示。 华为中小型企业项目案例拓扑图 实验配置市场部和技术部的配置创建VLANLSW1的配置 [LSW1]vlan batch 10 20 [LSW1]q…

深度学习-简介

一、几个概念 (1)what is ai including? 看一张图: 这里注意机器学习和深度学习的关系 (2)机器学习和模式识别有什么区别? 和机器学习同领域的有一个词叫做模式识别,二者有什么区别呢? 机…

Unity小框架之单例模式基类

单例模式(Singleton Pattern)是一种常用的创建型设计模式,其核心目标是确保一个类只有一个实例,并提供一个全局访问点。它常用于需要控制资源访问、共享配置或管理全局状态的场景(如数据库连接池、日志管理器、应用配置…

安装 Powerlevel10k 及 Oh My Zsh 的使用

1. 简介 Powerlevel10k 是 Oh My Zsh 最流行的终端主题,它不仅美观,还提供 Git 状态显示、命令执行时间、网络状态、Python 虚拟环境指示等 实用功能。相比其他主题,Powerlevel10k 速度更快、可定制性更强。 本教程将详细介绍如何安装 Powe…

verilog有符号数处理摘要

在FPGA设计中,一般的算数运算符都是按照无符号数进行的。那么需要有符号数计算的时候,该怎么办呢? 很久很久以前也就是Verilog-2001还没有出现时,是手动操作的,也就是说,对于一个8位的无符号数&#xff0c…

在IDEA中连接达梦数据库:详细配置指南

达梦数据库(DM Database)作为国产关系型数据库的代表,广泛应用于企业级系统开发。本文将详细介绍如何在IntelliJ IDEA中配置并连接达梦数据库,助力开发者高效完成数据库开发工作。 准备工作 1. 下载达梦JDBC驱动 访问达梦官方资…

app.config.globalProperties

目录 一:基础使用 1、简介 2、使用 3、打印结果: 二:封装 1、创建一个.ts文件(utils/msg.ts) 2、在main.ts中全局注册 3、在页面中使用 4、打印结果 一:基础使用 1、简介 app.config.globalProperties 是 Vue 3 应用实例(app)的一个配置属性&…

openai 标准化协议 Structured Outputs 具体示例教程

Structured Outputs 具体示例教程 场景:个人财务管理助手 假设我们要构建一个 AI 助手,帮助用户记录和管理个人财务支出。用户可以输入自然语言描述(如“昨天我花了50元买了午餐”),助手将提取关键信息并以结构化 JS…