@RequestBody

功能: 将 HTTP 请求体中的 JSON 或 XML 数据绑定到 Java 对象上。

示例:
假设你有一个 User 类,代表用户信息:

public class User {
    private String name;
    private int age;

    // getters and setters
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.


控制器方法使用 @RequestBody 注解来接收 JSON 请求体:

@RestController
public class UserController {

    @PostMapping("/user")
    public ResponseEntity<String> createUser(@RequestBody User user) {
        // 处理 User 对象
        return ResponseEntity.ok("User created: " + user.getName());
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.


如果你发送一个 POST 请求到 /user,请求体是:

{
    "name": "Alice",
    "age": 30
}
  • 1.
  • 2.
  • 3.
  • 4.


Spring 会自动将这个 JSON 数据转换成 User 对象,并传递给 createUser 方法。

@ResponseBody

功能: 将方法的返回值直接绑定到 HTTP 响应体上。

示例:
返回 JSON 数据的控制器方法:

@RestController
public class GreetingController {

    @GetMapping("/greeting")
    @ResponseBody
    public Map<String, String> getGreeting() {
        Map<String, String> response = new HashMap<>();
        response.put("message", "Hello, world!");
        return response;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.


请求到 /greeting 会返回:

{
    "message": "Hello, world!"
}
  • 1.
  • 2.
  • 3.


@RequestParam

功能: 从请求的查询参数或表单数据中提取值。

示例:
提取查询参数的控制器方法:

@RestController
public class SearchController {

    @GetMapping("/search")
    public ResponseEntity<String> search(@RequestParam String query, @RequestParam(defaultValue = "10") int limit) {
        // 处理查询
        return ResponseEntity.ok("Search query: " + query + ", Limit: " + limit);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.


请求到 /search?query=spring&limit=5 会返回:

Search query: spring, Limit: 5
  • 1.


@PathVariable

功能: 从 URL 路径中提取变量值。

示例:
提取路径变量的控制器方法:

@RestController
public class UserProfileController {

    @GetMapping("/user/{userId}")
    public ResponseEntity<String> getUserProfile(@PathVariable String userId) {
        // 处理用户 ID
        return ResponseEntity.ok("User ID: " + userId);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.


请求到 /user/12345 会返回:

User ID: 12345
  • 1.


@ModelAttribute

功能: 从请求参数中绑定数据到方法参数的模型对象。

示例:
提取表单提交数据的控制器方法:

public class User {
    private String name;
    private int age;

    // getters and setters
}

@RestController
public class RegistrationController {

    @PostMapping("/register")
    public ResponseEntity<String> registerUser(@ModelAttribute User user) {
        // 处理 User 对象
        return ResponseEntity.ok("User registered: " + user.getName());
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.


假设表单数据如下:

<form action="/register" method="post">
    <input type="text" name="name" value="Bob" />
    <input type="number" name="age" value="25" />
    <input type="submit" value="Register" />
</form>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.


提交表单后,registerUser 方法会接收到一个 User 对象,其中 name 为 “Bob” 和 age 为 25。