Мы обслуживаем статические (угловые) файлы вместе с REST API из того же приложения Spring Boot.Наша цель - получить эти конечные точки и результаты:
/index.html (served as a static file - this is our Angular entry)
/api-docs.html (served as a static file)
/vendor.js (served as a static file)
/product/123 (redirected to /index.html so Angular routing can take over)
/api/products/123 (handled by our separate API controller)
Мы работаем со следующим выражением шаблона:
/**/{path:^(?!index\.html)^(?!api-docs\.html).+
(?<!css)
(?<!js)
(?<!jpg)
(?<!png)
(?<!tff)
(?<!woff)
(?<!map)
$}
В попытке использовать шаблон выше to перенаправить любые соответствующие запросы на /index.html
, чтобы они могли быть обработаны Angular.
Однако наш шаблон выражения не удается ( соответствует ) по следующему пути:
/api/products/123
Который затем непреднамеренно перенаправляется на /index.html
.
Мой вопрос , как нам обеспечить, чтобы мы не хотели сопоставлять запросы конечных точек, которые содержатили начать с определенного компонента пути?(Например, /api/
)
Я пытался улучшить первую строку для чтения:
/^api/**/{path:^(?!index\\.html)^(?!swagger-ui\\.html).+
/^api**/{path:^(?!index\\.html)^(?!swagger-ui\\.html).+
/(?!api)/{path:^(?!index\\.html)^(?!swagger-ui\\.html).+
/^api/{path:^(?!index\\.html)^(?!swagger-ui\\.html).+
.. (a few other permutations) ..
Но все они, похоже, приводят к сбоям в других конечных точках.
Мне очень трудно найти хорошие примеры / документацию о том, как использовать расширенные операторы исключения / отрицания в AntPathMatcher
.