在 Spring Boot 中,@RequestPart
和 @RequestParam
注解都可以用于接收客户端提交的数据,但它们有一些区别。
@RequestParam
注解用于获取请求参数的值,常用于接收简单的表单数据。它可以用来接收 URL 查询参数、表单字段以及多部分表单提交的数据。当使用 @RequestParam
时,请求的 Content-Type 应该是 application/x-www-form-urlencoded
或 multipart/form-data
。
示例:
@PostMapping("/example")
public void example(@RequestParam("name") String name,
@RequestParam("age") int age) {
// 处理请求参数
}
@RequestPart
注解用于从请求中获取一个或多个部分(part)。它主要用于处理多部分表单提交的数据,例如上传文件。当使用 @RequestPart
时,请求的 Content-Type 应该是 multipart/form-data
。
示例:
@PostMapping("/upload")
public void upload(@RequestPart("file") MultipartFile file,
@RequestPart("metadata") String metadata) {
// 处理上传的文件和元数据
}
总结区别:
@RequestParam
?用于获取请求参数的值,适用于接收简单的表单数据。@RequestPart
?用于获取请求的部分(part),适用于处理多部分表单提交的数据,特别是上传文件。需要注意的是,当使用 @RequestPart
接收多部分表单数据时,MultipartFile 对象需要和 Content-Disposition
中的 name
属性值一致,用于匹配请求中的对应部分。