Регулярное выражение в 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 

в твоих рассуждениях должно получиться хорошо.

Другие вопросы по тегам