使用与优先级
使用
以下是一些模式匹配的示例:
- “/resources/ima?e.png” - 匹配路径段中的一个字符
- “/resources/*.png” - 匹配路径段中的零个或多个字符
- “/resources/**” - 匹配多个路径段
- “/projects/{project}/versions” - 匹配路径段并将其【捕获为变量】
- “/projects/{project:[a-z]+}/versions” - 使用正则表达式匹配并【捕获变量】
? 表示请求单个字符
* 零个或者多个字符
** 表示匹配多个字段
捕获的 URI 变量可以使用@PathVariable注解,示例例如:
@GetMapping("/owners/{ownerId}/pets/{petId}")
public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) {
// ...
}
在类和方法中声明URL变量
@Controller
@RequestMapping("/owners/{ownerId}")
public class OwnerController {
@GetMapping("/pets/{petId}")
public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) {
// ...
}
}
优先级
匹配方式 | 优先级 |
---|---|
全路径匹配,例如:配置路由/a/b/c | 第一优先级 |
带有{}路径的匹配,例如:/a/{b}/c | 第二优先级 |
正则匹配,例如:/a/{regex:\d{3}}/c | 第三优先级 |
带有路径的匹配,例如:/a/b/ | 第四优先级 |
带有**路径的匹配,例如:/a/b/** | 第五优先级 |