Sprint Boot中匹配URL路径的2种方法
Spring Boot 支持 URL 路径匹配,接下来介绍两种实现方法,分别是精确匹配和通配符匹配。
@RequestMapping 的通配符匹配非常简单实用,支持“*”“?”“**”等通配符。使用时需要了解通配符的匹配规则,否则容易出错。通配符匹配规则如下:
精确匹配
@RequestMapping 的 value 属性用于匹配 URL 映射,value 支持简单表达式:@RequestMapping("/getDataById/{id}") public String getDataById(@PathVariable("id") Long id) { return "getDataById:"+id ; }在上面的示例中,@PathVariable 注解作用在方法参数中,用于表示参数的值来自 URL 路径。如果 URL 中的参数名称与方法中的参数名称一致,则可以简化为:
@RequestMapping("/getDataById/{id}") public String getDataById(@PathVariable Long id) { return "getDataById:"+id ; }在上面的示例中,当在浏览器中访问 /getDataById/1 时,会自动映射到后台的 getDataById 方法,传入参数 id 的值为 1。
通配符匹配
@RequestMapping 支持使用通配符匹配 URL,用于统一映射某些 URL 规则类似的请求,示例代码如下:@RequestMapping("/getJson/*.json") public String getJson() { return "get json data"; }在上面的示例中,当在浏览器中请求 /getJson/a.json 或者 /getJson/b.json 时都会匹配到后台的 Json 方法。
@RequestMapping 的通配符匹配非常简单实用,支持“*”“?”“**”等通配符。使用时需要了解通配符的匹配规则,否则容易出错。通配符匹配规则如下:
- 符号“*”匹配任意字符,符号“**”匹配任意路径,符号“?”匹配单个字符;
- 有通配符的优先级低于没有通配符的,比如 /user/add.json比/user/*.json 优先匹配;
- 有“**”通配符的优先级低于有“*”通配符的。