介绍
介绍
大家都知道RESTFul风格的接口的URI路径和普通的接口是不一样的,根据RESTFul的规范请求的URI路径里需要指向一个具体的资源(Resource),这个URI路径里面可以包含资源版本(Version)和参数(Parameter),那么我们在实现RESTFul接口功能的时候就需要去从URI路径里面提取资源信息以及版本和参数了。
SpringBoot框架提供了一个简单的方法来提取URI路径里面的版本和参数,它通过@PathVariable注解来实现,今天福哥就带着童鞋们学习如何使用@PathVariable来获取URI路径里面的版本和参数。
教程
规范
设置@PathVariable的方法就是在Mapping地址里面通过{xxx}来设置采集参数,然后在映射方法声明里面通过@PathVariable注解将采集到的参数数值的参数赋值给映射方法的参数上面。
整段
将URI的一级目录名称作为参数。
@RequestMapping("/net.tongfu.path-variable/{version}/user/{user}") public Map<String, Object> pathVariable1( @PathVariable("version") Float version, @PathVariable("user") String user ){ Map<String, Object> map = new LinkedHashMap<>(); map.put("version", version); map.put("user", user); return map; }
右匹配
将URI的一级目录名称的右边部分作为参数。
@RequestMapping("/net.tongfu.path-variable/user/tf-{userID}") public Map<String, Object> pathVariable2( @PathVariable("userID") Integer userID ){ Map<String, Object> map = new LinkedHashMap<>(); map.put("userID", userID); return map; }
中间匹配
将URI的一级目录名称的中间部分作为参数。
@RequestMapping("/net.tongfu.path-variable/user/tfu{userName}data") public Map<String, Object> pathVariable3( @PathVariable("userName") String userName ){ Map<String, Object> map = new LinkedHashMap<>(); map.put("userName", userName); return map; }
总结
其实我们通过在Mapping里设置{xxx}模板参数后,系统在用户请求到达后就会通过正则表达式对URI路径进行匹配,然后将匹配到的参数数值赋值给映射方法的参数,我们就可以使用了!