Регулярное выражение в PathVariable не работает правильно Spring
Есть контроллер.
Я делаю запрос 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 ответ
Решение
Ты звонишь
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
в твоих рассуждениях должно получиться хорошо.