java - 正则表达式替换 Spring @RequestMapping URL 中的 @PathVariable 值

标签 java regex spring spring-mvc

我在接口(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/

相关文章:

split函数调用中的Java正则表达式表达式问题

javascript - 否定十进制数正则表达式模式以便用替换去除它

java - GUI 在 Java 的 While 循环期间卡住

\b 和国际字符的 Javascript 正则表达式问题

java - 在 Spring Boot 中配置 PropertyPlaceholderConfigurer

java - 将 Spring Boot 从 2.4.1 升级到 2.6.1,出现 `java.time.Instant` 默认不支持错误

java - 在 Spring Boot 应用程序 @RestController 中获取信息的哪种模式更好以及如何指定 ANY @Mapping?

java - Spring Boot通过 JDBC 语句执行 DDL 删除架构时出错

java - Android Spinner - 如何使下拉 View 透明?

java - JSF input failed to Double conversion 错误