需要带有路径变量的Spring控制器GetMapping正则表达式,该变量排除具有特定前缀的URL

时间:2019-09-19 12:55:57

标签: regex spring spring-boot spring-restcontroller

我正在尝试为我的Spring控制器方法创建一个正则表达式,以匹配我的Web应用程序中的所有路径,除了它还需要排除前缀为“ / websock” 的任何流量,用于我的websocket服务器。方法如下:

@GetMapping(value = "/{path:[^\\.]*}")
public String redirect(@PathVariable(value="path") String path) {
    LOGGER.debug("In redirect path:" + path);
    return "forward:/";
}

我在网上尝试了很多示例,但找不到能满足我需要的示例。我的示例要么接受了所有流量(包括websocket前缀),要么排除了一些http流量。

第一个正则表达式是

"/{path:[^\\.]*}" 

匹配URL,例如“ http://localhost:8080/abc”。但是,它没有匹配http://localhost:8080/abc/def

我第二次尝试使用

"/**/{path:[^\\.]*}" 

更正了该问题,但随后匹配了包括我的网络套接字流量在内的所有内容。

我尝试了以下操作,我从其他问题中发现以下内容应该排除以“ / websock”开头的流量。但是相反,它无法匹配包括上述“ abc” URL在内的所有内容:

"/{path:[^\\.]*}", "/**/{path:^(?!websock).*}/{path:[^\\.]*}".

我的reg-ex在做什么?

0 个答案:

没有答案