Мне нужно следующее:
Любой запрос к
и т. Д., Следует пересылать на
https://localhost:8443/a/web/index.html
Вот как мне удалось это сделать:
@Controller
public class ForwardController {
@RequestMapping(value = "/*", method = RequestMethod.GET)
public String redirectRoot(HttpServletRequest request) {
return "forward:/a/web/index.html";
}
}
Проблема:
Это также соответствует https://localhost:8443/api/ (обратите внимание на / в конце).
Это проблема, потому что я хочу, чтобы базовый путь Spring Data REST был:
spring.data.rest.base-path=/api/
/api != /api/
когда дело доходит до конечных точек REST.
Что должно работать, но как-то не так
Я пробовал несколько разных регулярных выражений, но я все еще не могу выполнить то, что хочу. Например ( демо ):
@RequestMapping(value = "/[^/]+", method = RequestMethod.GET)
Теперь будет работать для Spring Data - я получаю всю информацию о ресурсах, которую ожидаю, но доступ к https://localhost:8443/ теперь нарушен, и веб-клиент больше не может быть доступен.
То же самое относится и к
@RequestMapping(value = "/{path}", method = RequestMethod.GET)
@RequestMapping(value = "/{path:[^/]+}", method = RequestMethod.GET)
, который ведет себя как /*
(также соответствует следующему /
).
Эта проблема преследует меня уже несколько недель, но до сих пор не удалось найти решения.
Весь этот вопрос также можно рассматривать как:
Почему "/[^/]+"
не соответствует https://localhost:8443/whatever?