请求映射中的双星号

2022-09-02 09:48:02

当请求映射中存在双星号时,这意味着什么?例如

@RequestMapping(value = { "/", "/welcome**" }, method =
RequestMethod.GET)  public ModelAndView welcomePage() { ...

答案 1

普遍说的星号(通配符角色)表示

/welcome*:此文件夹或 URL 部分中的任何内容,在下一个 like 之前以 开头和结尾。"/welcome""/"/welcomePage

/welcome**:任何 URL,以包括 URL 模式的子文件夹和子部分(如 或 )开头。"/welcome"/welcome/section2/section3//welcomePage/index

/welcome/*:欢迎(在下一个之前)欢迎内的任何文件,文件夹或部分,例如。"/"/welcome/index

/welcome/**:欢迎使用任何文件、文件夹、分区、子文件夹或子节。

换句话说,一个星号*在下一个之前结束,两个星号**没有限制。"/"


答案 2
  1. 蚂蚁路径

  2. 网址映射排序。来自春季文档

当 URL 匹配多个模式时,将使用排序来查找最具体的匹配项。

具有较少 URI 变量和通配符计数的模式被认为更具体。例如,/hotels/{hotel}/* 有 1 个 URI 变量和 1 个通配符,被认为比 /hotels/{hotel}/** 更具体,后者是 1 个 URI 变量和 2 个通配符

...

还有一些额外的特殊规则:

  • 默认映射模式 /** 不如任何其他模式具体。例如,/api/{a}/{b}/{c}更具体。
  • 前缀模式(如 /public/**)不如不包含双通配符的任何其他模式具体。例如,/public/path3/{a}/{b}/{c}更具体。

推荐