@PostMapping用于处理HTTP POST请求,需按前端传参方式选择接收方式:JSON用@RequestBody+实体类,表单用@RequestParam或@ModelAttribute,路径变量与请求体可共存,文件上传用@RequestParam+MultipartFile。

在 Spring Boot 中,@PostMapping 用于处理 HTTP POST 请求,接收客户端传来的数据。关键在于根据前端传参方式(表单、JSON、文件等)选择合适的后端接收方式,并配合正确的注解和参数类型。
接收 JSON 数据(最常见)
前端通常用 fetch 或 axios 发送 JSON,Content-Type 为 application/json。后端需用 @RequestBody + 实体类接收:
- 定义一个 Java Bean(字段名与 JSON key 严格匹配,或用
@JsonProperty映射) - 方法参数加
@RequestBody注解 - 确保项目已引入
spring-boot-starter-web(默认含 Jackson)
示例:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
@PostMapping("/user")
public ResponseEntity<String> createUser(@RequestBody User user) {
System.out.println(user.getName()); // 自动反序列化
return ResponseEntity.ok("success");
}
接收表单数据(application/x-www-form-urlencoded)
适用于 HTML 表单提交或 Postman 的 form-data 模式。此时不加 @RequestBody,而是用:
-
@RequestParam:接收单个字段(如name=Tom&age=25) -
@ModelAttribute:接收多个字段并自动绑定到对象(推荐) - 注意:不能混用
@RequestBody和表单参数
示例:
@PostMapping("/login")
public String login(@ModelAttribute LoginForm form) {
return "welcome, " + form.getUsername();
}
接收路径变量 + 请求体混合数据
URL 中带 ID、请求体中带内容时,可组合使用:
-
@PathVariable取 URL 路径中的变量(如/api/users/123) -
@RequestBody接收 JSON 主体 - 二者可同时出现在同一个方法参数列表中
示例:
@PostMapping("/users/{id}")
public User updateUser(@PathVariable Long id, @RequestBody UserUpdateDTO dto) {
dto.setId(id);
return userService.update(dto);
}
接收文件 + 其他参数(MultipartFile)
上传文件时 Content-Type 是 multipart/form-data,需用:
-
@RequestParam("file") MultipartFile file接收单个文件 - 其他普通字段也用
@RequestParam(不能用@RequestBody) - 确保配置了
spring.servlet.multipart.max-file-size等限制项
示例:
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file,
@RequestParam("desc") String description) {
// 处理上传逻辑
return "uploaded";
}

















