权威分析@RequestParam和@RequestPart 的区别(官方文档)
时间: 2023-07-25 22:21:36 浏览: 83
@PathVariable和@RequestParam的区别1
@RequestParam 和 @RequestPart 都是 Spring MVC 中用于处理 Http 请求参数的注解,它们的主要区别在于处理的请求参数类型不同。
@RequestParam 用于处理简单类型的请求参数,例如 String、int、boolean 等。它的常用属性有:
- value:参数名;
- required:是否必须,默认为 true;
- defaultValue:默认值。
示例代码:
```java
@GetMapping("/user")
public User getUser(@RequestParam("id") Long id) {
return userService.getUserById(id);
}
```
@RequestPart 用于处理复杂类型的请求参数,例如文件、JSON 对象等。它的常用属性有:
- value:参数名;
- required:是否必须,默认为 true;
- name:参数名;
- fileNam:文件名;
- contentType:文件类型;
- encoding:编码方式。
示例代码:
```java
@PostMapping("/user")
public void createUser(@RequestPart("user") User user, @RequestPart("file") MultipartFile file) {
userService.createUser(user, file);
}
```
需要注意的是,@RequestPart 注解只能用于 POST 请求中的 Content-Type 为 multipart/form-data 的情况下,因为该 Content-Type 支持文件上传。而 @RequestParam 注解对请求的 Content-Type 没有限制。
阅读全文