Jaxrs (RESTEasy) несколько подресурсов в @Path regexp - PullRequest
1 голос
/ 12 марта 2019

У меня небольшая проблема с использованием параметра регулярного выражения @Path.Я пытаюсь соответствовать пути а или б.Я пытался использовать:

@Path("/{a: path\\/to\\/resource|resource}")

Так что либо

http://localhost:1111/path/to/resource

или

http://localhost:1111/resource

выполнит один и тот же метод.Моя проблема, кажется, возникает, когда я использую две косые черты.Я могу получить доступ только к методу, используя

http://localhost:1111/resource

, но не другой.

Однако при выполнении:

@Path("/{a: path\\/resource|resource}")

Он работает как задумано, и я могу получить доступ к методу, используя

http://localhost:1111/path/resource

или

http://localhost:1111/resource.

Я попытался выполнить отрицательный анализ, чтобы исключить первую часть запроса и вернуть только общее свойство (ресурс):

@Path("/{a: (?!path\\/to\\/)resource}")

Но это тоже не сработало.Это имело тот же эффект, что и моя первая реализация, я мог получить доступ только к ресурсу.

Я также пытался:

@Path("/{a: (path\\/to)?}{b: (\\/)?}resource")

, который работал как предполагалось, но также работал, если я запрашивал

http://localhost:1111/path/toresource

или

http://localhost:1111//resource

Таким образом, создается 4 URL-адреса записей, когда я хочу иметь только два.

Я что-то упускаю из-закосые черты, почему мой шаблон регулярных выражений не может содержать более одной косой черты?

1 Ответ

0 голосов
/ 14 марта 2019

Я думаю, что, возможно, выяснил причину проблемы.

У меня есть несколько других путей с разными методами HTTP (GET, PUT, DELETE), использующих тот же URL (/ path / to / resource). Я подозреваю, что он пытался сопоставить путь / ресурс / с одним из этих методов перед выполнением регулярного выражения. Я обосновываю это подозрение, что когда я переименовал метод POST в:

@Path("/{a: (notPath\\/to\\/)?}resource"}

Работает как задумано. Я смог получить ответ от обоих

локальный: 1111 / notPath / к / ресурсов

и

локальный: 1111 / ресурс

...