20.@PathVariable
@PathVariable 注解主要用来获取 URL 参数,Spring Boot 支持 Restfull 风格的 URL,比如一个 GET 请求携带一个参数 id,我们将 id 作为参数接收,可以使用 @PathVariable 注解。如下:
@GetMapping("/user/{id}")
public String testPathVariable(@PathVariable Integer id) {
System.out.println("获取到的id为:" + id);
return "success";
}
这里需要注意一个问题,如果想要 URL 中占位符中的 id 值直接赋值到参数 id 中,需要保证 URL 中的参数和方法接收参数一致,否则将无法接收。如果不一致的话,其实也可以解决,需要用 @PathVariable 中的 value 属性来指定对应关系。如下:
@RequestMapping("/user/{idd}")
public String testPathVariable(@PathVariable(value = "idd") Integer id) {
System.out.println("获取到的id为:" + id);
return "success";
}
对于访问的 URL,占位符的位置可以在任何位置,不一定非要在最后,比如这样也行:/xxx/{id}/user。另外,URL 也支持多个占位符,方法参数使用同样数量的参数来接收,原理和一个参数是一样的,例如:
@GetMapping("/user/{idd}/{name}")
public String testPathVariable(@PathVariable(value = "idd") Integer id, @PathVariable String name) {
System.out.println("获取到的id为:" + id);
System.out.println("获取到的name为:" + name);
return "success";
}
浏览器中请求:localhost:8080/test/user/2/zhangsan, 可以看到控制台输出如下信息:
获取到的id为:2
获取到的name为:zhangsan
所以它支持多个参数的接收。同样地,如果 URL 中的参数和方法中的参数名称不同的话,也需要使用 value 属性来绑定两个参数。