@RestController 注解的功能和用途
@RestController
是 Spring Framework 提供的一个注解,用于简化创建 RESTful Web 服务的开发过程。它是 @Controller
和 @ResponseBody
注解的结合,意味着它不仅标识一个 Spring MVC 控制器,同时还将控制器中的每个方法的返回值自动转换为 HTTP 响应体。
功能和用途
标识控制器
@RestController
将类标识为一个控制器,用于处理 HTTP 请求。这个类通常包含多个映射到不同 URL 路径的处理方法。
简化 JSON/XML 响应
- 使用
@RestController
,方法返回的对象会自动转换为 JSON 或 XML 格式(具体取决于请求头部的Accept
信息),不需要使用@ResponseBody
注解来明确标记响应体。
- 使用
处理 HTTP 请求
- 可以处理各种 HTTP 方法(如 GET、POST、PUT、DELETE 等)的请求。方法可以通过
@RequestMapping
或其他特定HTTP方法注解(如@GetMapping
,@PostMapping
等)来映射请求。
- 可以处理各种 HTTP 方法(如 GET、POST、PUT、DELETE 等)的请求。方法可以通过
与 Spring Boot 集成
- 在 Spring Boot 应用程序中,
@RestController
是通常用于创建 REST API 的常见实践,配合 Spring Boot 的自动配置功能,可以快速启动一个 Web 服务应用。
- 在 Spring Boot 应用程序中,
例子
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/hello")
public String helloWorld() {
return "Hello, World!";
}
}
在这个例子中,/hello
的 GET 请求将返回一个简单的字符串 "Hello, World!",这个字符串会被自动写入 HTTP 响应的主体中。
典型用法
- 构建 RESTful API。
- 返回 JSON 格式的数据。
- 处理用户请求并返回包括状态码、消息体在内的 HTTP 响应。
- 结合其他功能性注解(如
@PathVariable
,@RequestParam
,@RequestBody
)获取请求参数,实现更复杂的业务逻辑。
通过 @RestController
,开发者能够快速、简便地创建和管理 RESTful 服务。