1.
@Controller
@ResponseBody
相当于
@RestController
controller注解会被解析为具体跳转路径,而加上了@ResponseBody,则不会经过视图解析器,从而返会什么数据,页面打印什么数据
具体代码
@RestController
public class demo1 {
@GetMapping("/hello")
public R Hello1(){
return R.ok().put("hello","你好");
}
}
前面的msg和code是在我的utils的工具包里所定义的R
2.
@PathVariable
PathVariable获取路径参数,即如图下代码所示
@GetMapping("/hello/{id}")
public R hello2(@PathVariable("id") String id){
return R.ok().put("hello","我是"+id+"号");
}
3.
RequestParam主要获取路径后为?的值
有四个参数
value,name,required,defaultValue
value和name代表着参数的名字,required代表着是否需要出现在路径后,defaultValue代表默认的值
而我们看到源码就不难发现value就是name,name就是value,两个不能同时出现,比如
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}
而我们看到源码就不难发现value就是name,name就是value,两个不能同时出现,比如
@GetMapping("/hello3")
public R hello3(@RequestParam(value = "id",required = false,name = "1") String id,
@RequestParam(value = "name",required = true) String name,
@RequestParam(value = "age",required = true,defaultValue = "12") String age){
return R.ok().put("hello","我是id为"+id+",名字为"+name+",年龄为"+age+"的学生");
}
而正确的如下
@GetMapping("/hello3")
public R hello3(@RequestParam(value = "id",required = false) String id,
@RequestParam(value = "name",required = true) String name,
@RequestParam(value = "age",required = true,defaultValue = "12") String age){
return R.ok().put("hello","我是id为"+id+",名字为"+name+",年龄为"+age+"的学生");
}
上面代码所示,id的required为false,从而如果没有id时则为null,而age给了默认值
4.
@RequestBody
这里只有一个参数,就是required,默认为true,代表就是需要请求体
RequestBody用于接收请求体参数,我们这边封装了个Vo,user类用来接收请求体参数
@Data
public class User {
public String name;
public String id;
}
而测试的代码如下
@PostMapping("/hello4")
public R hello4(@RequestBody User user){
return R.ok().put("user",user);
}
由于浏览器不能直接发送请求体,我们使用了Apifox用来发送请求体
5.
@RequestHeader类似于RequestParam,参数也一样
RequestHeader获取请求体信息
如果需要这份小demo,这里时链接https://gitee.com/wuwenlei/annotation-development/tree/dev/