我在接口(interface)中定义了 Spring MVC URL(只是为了保存常量),例如:
String URL_X = "/my-url/{id:[0-9]*}";
String URL_Y = "/my-url/{id:[0-9]*}/blah-blah";
我有一个测试方法可以替换 URL 中的变量:
private static final String REGEX_PARAMETROS_DA_URL = "(\\{[^\\}]*\\})";
protected String replaceParametersOnURL(String urlSpring, String... params) {
String urlAtual = urlSpring;
for (String parametro : params) {
urlAtual = urlAtual.replaceFirst(REGEX_PARAMETROS_DA_URL, parametro);
}
return urlAtual;
}
我使用这个正则表达式:(\{[^\}]*\})
来匹配变量并替换它。
但现在我有一些带有 {} 的 URL,但我找不到正确的正则表达式来用我的值替换变量。
Spring 上是否有任何方法可以替换 PathVariable 值,或者任何人都可以帮助我使用此正则表达式吗?
以这个 URL 为例:
/pessoajuridica/{cnpj:[0-9]{14}}-{slug:[a-zA-Z0-9-]+}/sancoes/resumo
匹配项必须为:{cnpj:[0-9]{14}}
和 {slug:[a-zA-Z0-9-]+}
最佳答案
谢谢@Matthew。我没有注意到 spring 测试本身可以做到这一点!
我需要做的是:
mockMvc.perform(get("/pessoajuridica/{cnpj:[0-9]{14}}-{slug:[a-zA-Z0-9-]+}/sancoes/resumo", var1, var2)) ...
关于java - 正则表达式替换 Spring @RequestMapping URL 中的 @PathVariable 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998970/