@RequestBody和@ResponseBody的区别?

101 阅读1分钟

@RequestBody@ResponseBody 是 Spring 框架中用于处理 HTTP 请求和响应的注解,用于在控制器中处理请求体和响应体的相关操作。

  1. @RequestBody

    • 用于将 HTTP 请求体中的数据绑定到方法参数上,通常用于处理 POST 请求,将请求体的内容作为方法参数传入。
    • 用于接收客户端通过 POST 请求发送的 JSON 或 XML 数据。
    • 通常用于处理前端通过 Ajax 发送的 JSON 数据,或者通过 HTTP POST 请求发送的表单数据。

    示例:

    @PostMapping("/example")
    public ResponseEntity<User> handleRequest(@RequestBody User user) {
        // 处理请求体数据
        return ResponseEntity.ok("Received: " + user);
    }
    
  2. @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 请求体和响应体进行数据传输。