Регулярное выражение в PathVariable не работает правильно Spring - PullRequest
0 голосов
/ 25 января 2019

Есть контроллер.

Я делаю запрос http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG - я получаю 404.Это не доходит до метода.Зачем?Что не так в обычном сезоне?

Я использую Spring Boot 2. Но дело в том, что есть проект, без загрузки и там же сопоставление - все в порядке.

@Controller
@RequestMapping("/api/v1/download")
public class DownloadRestController {

    private final DownloadService downloadService;

    @Autowired
    public DownloadRestController(DownloadService downloadService) {
        this.downloadService = downloadService;
    }

    @RequestMapping(value = "/avatar/{path:.*}")
    public void download(HttpServletRequest request, @PathVariable String path) {
        this.downloadService.download(request, "/avatar/"+path);
    }

}

1 Ответ

0 голосов
/ 25 января 2019

Вы звоните

http://localhost:8080/api/v1/download/avatar/1/GtAHWk3EVjBcltY.JPG

и ваш метод принимает http://localhost:8080/api/v1/download/avatar/{path}.

Итак, вы проходите два @PathVariable с - вот почему вы получаете HTTP-404. Вы должны решить, хотите ли вы

@PathVariable("id") long id, @PathVariable("path") String path

с 2 переменными пути или

@PathVariable("path") String path 

с одним.

Кроме того, чтобы добавить к вышесказанному, добавление некоторых регулярных выражений не обязательно для вас.

@PathVariable("path") String path 

в ваших аргументах должно работать хорошо.

...