Springmaot Requestmapper Регулярное выражение - PullRequest
0 голосов
/ 19 января 2020

В моем Springboot-Controller мой метод Requestmapping должен поддерживать гибкие имена подкаталогов. Для этого мне нравится использовать реальное выражение. Я проверил свое регулярное выражение, и оно отлично работает вне SpringBoot и RequestMapping, однако поверх RequestMapping оно не работает.

Если какие-либо http-запросы поступают с

http://dir1 или http://dir2

, мой метод getFile должен вызываться, но это не так.

@RequestMapping(value = "{reg:\\/(dir1|dir2)+}", method = RequestMethod.GET)    
public void getFile(HttpServletResponse response, HttpServletRequest requ) throws IOException {

}

Мой вопрос: как это сделать? 1015 * это ....

Ответы [ 2 ]

1 голос
/ 19 января 2020

На основе регулярных выражений @RequestHandler можно добиться с помощью ( для более )

    @RequestMapping(value = "{reg:regexPattern}", method = RequestMethod.GET)
    public void getFile(HttpServletRequest request, HttpServletResponse response, 
            @PathVariable String reg) throws IOException {
                 ...
             }

Но в вашем случае шаблон регулярного выражения - это значение каталога, содержащее Sla sh ("/") затрудняет нахождение обработчика запросов для точного отображения. Вместо @PathVariable вы можете использовать @RequestParam


    @RequestMapping(value = "\", method = RequestMethod.GET)
    public void getFile(HttpServletRequest request, HttpServletResponse response, 
          @RequestParam("dir") String dir) throws IOException {
        ...
    }

0 голосов
/ 19 января 2020

Решение в том, что (Дирк Дейн подсказал мне), что Слэши должны быть вне регулярного выражения. Вот решение, в котором я расширил значение с помощью другого подкаталога filedir , чтобы сделать его более понятным:

@RequestMapping(value = "/{subdir:[dir1|dir2]+}/filedir", method = RequestMethod.GET)
public void getFile(HttpServletResponse response, HttpServletRequest requ) {
  ...
}

Это будет обслуживать следующие входящие запросы:

Спасибо!

...