同福

SpringBoot的Restful的请求路径参数@PathVariable注解的使用技巧【20211110】

介绍

介绍

大家都知道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;
}

home/topic/2021/1111/10/8a826482b8e0e0277923c5d43d43fa35.png

右匹配

将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;
}

home/topic/2021/1111/10/5d389ad76ddc07a5815eec9877cc5839.png

中间匹配

将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;
}

home/topic/2021/1111/10/2f12e5b0444e2ab24034c46356cde24a.png

总结

其实我们通过在Mapping里设置{xxx}模板参数后,系统在用户请求到达后就会通过正则表达式对URI路径进行匹配,然后将匹配到的参数数值赋值给映射方法的参数,我们就可以使用了!