@RequestBody 和 @ResponseBody 是 Spring 框架中用于处理 HTTP 请求和响应的注解,用于在控制器中处理请求体和响应体的相关操作。
-
@RequestBody:- 用于将 HTTP 请求体中的数据绑定到方法参数上,通常用于处理 POST 请求,将请求体的内容作为方法参数传入。
- 用于接收客户端通过 POST 请求发送的 JSON 或 XML 数据。
- 通常用于处理前端通过 Ajax 发送的 JSON 数据,或者通过 HTTP POST 请求发送的表单数据。
示例:
@PostMapping("/example") public ResponseEntity<User> handleRequest(@RequestBody User user) { // 处理请求体数据 return ResponseEntity.ok("Received: " + user); } -
@ResponseBody:- 用于将方法的返回值直接作为 HTTP 响应体的内容,而不是通过视图解析器进行解析。
- 通常用于返回 JSON 或其他格式的数据,而不是渲染 HTML 视图。
- 在 RESTful 风格的控制器中,
@ResponseBody可以用于直接返回数据,而不是通过视图进行渲染。
示例:
@GetMapping("/example") @ResponseBody public Map<String, Object> handleResponse() { // 返回JSON数据 Map<String, Object> responseData = new HashMap<>(); responseData.put("key", "value"); return responseData; }
总结:
@RequestBody用于处理请求体,将请求体的内容映射到方法参数中。@ResponseBody用于处理响应体,将方法的返回值直接作为响应体的内容。
这两个注解通常一起使用,用于构建 RESTful 风格的控制器,通过 HTTP 请求体和响应体进行数据传输。