Шаблон сопоставления Spring / Ant для углового перенаправления и статического обслуживания ресурсов - PullRequest
0 голосов
/ 24 января 2019

Мы обслуживаем статические (угловые) файлы вместе с 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.

...