@restcontroller 是 spring mvc 中用于构建 restful api 的注解,等价于 @controller + @responsebody,使类中所有方法默认返回 json/xml;配合 @requestmapping 和 http 方法注解定义资源路径,返回对象自动序列化为 json,并推荐统一响应结构与异常处理。

@RestController 是 Spring MVC 中专为构建 RESTful 风格 Web API 而设计的注解,它本质是 @Controller 和 @ResponseBody 的组合,让每个方法默认返回 JSON/XML 数据而非视图页面。
用 @RestController 替代 @Controller + @ResponseBody
传统控制器需在每个方法上加 @ResponseBody 才能返回 JSON;而 @RestController 声明在类上后,所有方法自动具备该行为,无需重复标注。
- 错误写法(冗余):
@Controller
public class UserController {
@ResponseBody
@GetMapping("/users")
public List
}
- 正确写法(简洁统一):
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
public List
@PostMapping
public User create(@RequestBody User user) { ... }
}
配合 @RequestMapping 和 HTTP 方法注解定义资源路径
RESTful 强调“资源”与“操作”的分离。推荐在类上用 @RequestMapping 定义基础路径,在方法上用 @GetMapping、@PostMapping 等明确语义。
-
@GetMapping("/users")→ 查询全部用户(GET) -
@GetMapping("/users/{id}")→ 查询单个用户(GET) -
@PostMapping("/users")→ 创建用户(POST) -
@PutMapping("/users/{id}")→ 全量更新(PUT) -
@PatchMapping("/users/{id}")→ 局部更新(PATCH) -
@DeleteMapping("/users/{id}")→ 删除用户(DELETE)
返回值自动序列化为 JSON
Spring Boot 默认集成 Jackson,只要返回对象(如 User、List<user></user> 或 Map<string object></string>),框架会自动转成 JSON 并设置 Content-Type: application/json。
- 确保实体类有无参构造器和 getter 方法
- 可使用
@JsonInclude(JsonInclude.Include.NON_NULL)控制空字段是否输出 - 需要自定义序列化逻辑时,可添加
@JsonSerialize或配置ObjectMapper
统一处理异常与返回结构(增强 REST 规范性)
真实项目中建议封装标准响应体(如 { "code": 200, "data": ..., "msg": "success" }),并用 @ControllerAdvice 统一捕获异常。
- 定义通用响应类:
Result<t></t>,含 code、msg、data 字段 - 用
@ExceptionHandler拦截RuntimeException等,返回Result.error(...) - 避免在每个 Controller 方法里手动包装
Result.success(user),可考虑 AOP 或自定义@ResponseBodyAdvice
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











