根据下图的class文件,我们可以看出@RestController是一个复合注解,其中主要复合了@Controller和@ResponseBody。
@Controller:表示该类是controller层的bean,可以告诉容器来创建该类,并放到容器中,需要使用时直接来拿就可以。
@ResponseBody:表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式(有利于ajax接受json数据,展示到前端)
@RestController:包含复合注解的功能,并且使用该注解时,请求的风格一般会采用RESTful的风格
REST(英文:Representational State Transfer,简称 REST)
任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为 RESTFul 架构。
比如我们要访问一个 http 接口:http://localhost:8080/boot/order?id=1021&status=1
采用 RESTFul 风格则 http 地址为:http://localhost:8080/boot/order/1021/1
RESTful常用的注解
(
1) @PathVariable
获取 url 中的数据
该注解是实现 RESTFul 最主要的一个注解,例如:
/**
* @PathVariable(路径变量):获取url中的数据
* 属性:value :路径变量名
* 位置:放在控制器方法的形参的前面
*
* http://localhost:8080/myboot/student/1002
*/
@GetMapping("/student/{stuId}")
public String queryStudent(@PathVariable(value = "stuId") Integer studentId){
return "查询学生stuId="+studentId;
}
通过@PathVariable标注的变量可以将变量直接跟在http后面,不需要像传统的http一样变量要跟在?后面。更加美观便捷。
(
2) @PostMapping
接收和处理 Post 方式的请求
(
3) @DeleteMapping
接收 delete 方式的请求,可以使用 GetMapping 代替
(
4) @PutMapping
接收 put 方式的请求,可以用 PostMapping 代替
(
5) @GetMapping
接收 get 方式的请求