详细分析SpringMVC中的@RequestPart注解基本知识
目录
- 前言
- 1. 基本知识
- 2. Demo
前言
基本的Java知识推荐阅读:
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
- 【Java项目】实战CRUD的功能整理(持续更新)
1. 基本知识
@RequestPart
注解主要用于在 Spring Boot 中接收 HTTP 请求中的"部分"数据,通常在处理多部分请求(如文件上传)时使用
与 @RequestBody
不同,@RequestPart
适用于 multipart/form-data 类型的请求,而 @RequestBody
通常用于 application/json 类型的请求
- 适用场景:用于处理多部分请求,如文件上传或表单数据混合 JSON
- 注解目标:可以用在方法参数上,帮助 Spring MVC 自动绑定 multipart 表单数据到方法参数
- 常见用途:文件上传、混合文本和文件的数据处理
- 依赖配置:需确保配置了 MultipartResolver,一般情况下 Spring Boot 默认配置了 StandardServletMultipartResolver,无需额外设置
@RequestPart 与 @RequestBody 的具体差异
特性 | @RequestPart | @RequestBody |
---|---|---|
请求类型 | 主要用于 multipart/form-data | 主要用于 application/json |
适用数据类型 | 文件、JSON、表单数据等 | 适用于 JSON 数据 |
绑定方式 | 可绑定到文件、基本数据类型和 POJO | 绑定到 JSON 对象并直接映射成 POJO |
用途 文件 | 上传和多部分数据 | 常规的 JSON 数据绑定 |
常用场景 | 文件和元数据混合处理 | JSON 请求体的数据 |
多参数支持 | 适合处理多种类型参数混合 | 通常用于单一的 JSON 对象 |
Postman 支持 | 需要选择 form-data,每部分对应 key 名 | 直接以 raw 格式发送 JSON 数据 |
-
使用 @RequestPart:
选择 form-data 作为请求体类型
每一个字段(包括文件)都作为独立的“键值对”发送,文件部分需将类型设置为 File
支持文件与文本混合的数据提交 -
使用 @RequestBody:
选择 raw 格式的请求体类型,并选择 JSON
直接发送 JSON 格式的数据
2. Demo
基本的示例Demo如下:
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.http.ResponseEntity;@RestController
@RequestMapping("/upload")
public class FileUploadController {// 上传接口,接收文件和JSON数据@PostMapping("/file")public ResponseEntity<String> handleFileUpload(@RequestPart("file") MultipartFile file, // 接收文件@RequestPart("metadata") UploadMetadata metadata // 接收JSON数据) {// 处理文件和元数据String fileName = file.getOriginalFilename();String description = metadata.getDescription();// 文件处理逻辑// JSON 数据处理逻辑return ResponseEntity.ok("文件上传成功,文件名:" + fileName + ",描述:" + description);}// 数据类,用于接收JSON数据public static class UploadMetadata {private String description;// Getters and Setterspublic String getDescription() {return description;}public void setDescription(String description) {this.description = description;}}
}