UriTemplate Parser解释通配符

时间:2015-03-20 14:20:31

标签: spring spring-mvc

我有像这样的uriTemplate

/{repository}/{id}/action/{methodName}/**

org.springframework.data.rest.webmvc.util.UriUtils使用org.springframework.web.util.UriTemplate在findMappingVariable方法中获取变量

UriTemplate.Parser构建此值的模式

\Q/\E(.*)\Q/\E(.*)\Q/action/\E(.*)\Q/**\E

为什么不这样呢?

\\Q/\\E(.*)\\Q/\\E(.*)\\Q/action/\\E(.*)\\Q/\\E(.*)\\Q\\E

由于这个功能,我在那里有空地图

Map<String, String> variables = new org.springframework.web.util.UriTemplate(mapping).match(lookupPath);

用于此lookupPath

 /educationDistrict/308/action/resetAddressesForYear/1

2 个答案:

答案 0 :(得分:0)

我认为URI模板中不允许使用**段。在这种情况下,如果**部分匹配了多个段,那么在获取路径变量时会有什么期望?

请注意,如果您尝试构建模板以进行REST调用,则应检查RestTemplate和UriComponentsBuilder(see reference doc)。

答案 1 :(得分:0)

如果您想拥有一个与正则表达式匹配的UriTEmplate,则可以使用它{:}例如,

/test-service/test-endpoint/countries/1/cities/2

/test-service/test-endpoint/people/5/adults/6

可以分别与UriTemplate 匹配。

/test-service/test-endpoint/countries/{id}/cities/{id}

/test-service/test-endpoint/people/{id}/adults/{id}

如果您要匹配两者

/test-service/test-endpoint/{:.*}

enter image description here

这里是链接

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/UriTemplate.html#matches-java.lang.String-

URI template needs to match with variable value that is a set of folders