spring-webmvc @RequestBody 典型用法

发布于:2025-06-21 ⋅ 阅读:(15) ⋅ 点赞:(0)

典型用法

接收 JSON 请求体并转换为 Java 对象

@PostMapping("/users")
public String createUser(@RequestBody User user) {
    return "User created: " + user.getName();
}

// 客户端请求示例(JSON):
  {
    "name": "Alice",
    "email": "alice@example.com"
  }
// Spring 自动使用 HttpMessageConverter(如 Jackson)将 JSON 转换为 User 对象。

接收原始 JSON 字符串(String 类型)

如果你不想立即反序列化对象,也可以直接接收原始 JSON,适用于需要手动解析或转发的场景。

@PostMapping("/data")
public String receiveJson(@RequestBody String rawJson) {
    return "Received JSON: " + rawJson;
}

接收 Map 结构(灵活处理动态字段)

当请求结构不确定时,可以使用 Map 接收数据

@PostMapping("/map")
public String handleMap(@RequestBody Map<String, Object> data) {
    return "Received name: " + data.get("name");
}

// 请求示例:
  {
    "name": "Bob",
    "age": 30
  }

结合 @Valid 进行参数校验

你可以配合 @Valid 注解对请求体进行校验,需要在 User 类中添加 JSR 380 校验注解(如 @NotBlank, @Email 等)

@PostMapping("/validate")
public String validateUser(@Valid @RequestBody User user, BindingResult result) {
    if (result.hasErrors()) {
        return "Validation failed";
    }
    return "Valid user: " + user.getName();
}

接收嵌套结构(List / 复杂对象)

@PostMapping("/batch")
public String createUsers(@RequestBody List<User> users) {
    return "Total users: " + users.size();
}

// 请求示例:
  [
    {"name": "Alice"},
    {"name": "Bob"}
  ]

网站公告

今日签到

点亮在社区的每一天
去签到