Нужно регулярное выражение для контроллера Spring GetMapping с переменной пути, которая исключает URL с определенным префиксом - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь создать регулярное выражение для моего метода контроллера Spring, которое соответствует всем путям в моем веб-приложении, за исключением того, что ему также необходимо исключить трафик с префиксом «/ websock» , который приходитдля моего сервера веб-сокетов.Вот метод:

@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".Но вместо этого ему не удалось сопоставить что-либо, включая URL-адреса «abc», указанные выше:

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

Что я делаю не так с моим reg-ex?

...