Я пытаюсь создать rest api, который принимает в качестве переменного пути путь от s3 (aws), и у меня есть некоторые проблемы.
GetMapping(value = "files/{filePath}", produces = "application/json")
Если я укажу, например, путь: myFiles/uni/mymarks.txt, он будет рассматривать его не как переменную, а как полный путь, поэтому он не может его сопоставить. Какие-либо рекомендации о том, как я могу указать это как переменную? (косая черта создает эту проблему).
Если у меня есть в переменной filePath что-то вроде name.txt, она сохраняет только имя и удаляет .txt, поэтому имя неверно, когда я хочу использовать его позже в коде. Какие-нибудь корректировки?




Как насчет?
@RequestMapping(path = "/files/**", method = RequestMethod.GET)
public ResponseEntity<String> s3ProxyGet(HttpServletRequest request) {
String path = new UrlPathHelper().getPathWithinApplication(request);
...
Потом:
curl http://localhost:8080/files/uni/mymarks.txt
будет отображаться на этот метод контроллера, а path будет содержать /files/uni/mymarks.txt. Затем вы можете обрезать /files спереди и выполнить выборку из s3.
UrlPathHelper из библиотеки spring-web.
HTH
Отлично. Рад, что смог помочь. В свою очередь, если решение работает, можете ли вы принять его в качестве ответа или проголосовать за него?