本部分示例代码见此项目的 mvc 分支下的 RespBodyController.java 和 TheRestController.java
① 使用注解@ResponseBody映射响应体
注解@ResponseBody
和@RequestBody
很像。这个注解可以放到一个方法中,指示返回类型应该直接被写进HTTP响应体中(而不是放到一个Model中、也不是翻译为一个视图名)。例如:
@GetMapping("/something")
@ResponseBody
public String helloWorld() { return "Hello World"; }
上面的示例会返回文本 “Hello World”,并把它写到HTTP响应流中。
就像@RequestBody
,Spring 使用HttpMessageConverter
把返回的对象转换到请求体中。更多关于这些转换器的消息,参见消息转换器.
② 使用注解@RestController
创建 REST 控制器
一个非常常见的场景是让控制器实现 REST API,因此只服务于 JSON、XML 或者自定义的 MediaType 内容。为了方便,避免在所有的@RequestMapping
方法上加上@ResponseBody
注解,你可以用@RestController
注解你的控制器类.
@RestController 是一个模板注解,它合并了@ResponseBody
和@Controller
。不仅如此,它还为你的控制器赋予了更多的意义,在未来的发行版本中也将包含更多语义。
就像常规的@Controllers
,@RestController
可以由@ControllerAdvice
或者@RestControllerAdvice
Bean 协助。详情见用 @ControllerAdvice 和 @RestControllerAdvice 通知控制器”一节