Снимите префикс в шлюзе Zuul API - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь настроить маршрутизатор вызовов API с помощью zuul, который переадресует вызовы.Существует две службы: служба пользователей использует управление версиями пути, т.е. /v1/users, /v2/users, ... Служба учетных записей не использует управление версиями пути, поэтому во всех маршрутах префикс v* пропускается (/accounts).

Чтобы обеспечить общий интерфейс, я хотел бы принимать вызовы на /v*/accounts в моем маршрутизаторе API и переадресовывать их на /accounts в моей службе учетных записей.Звонки на номер /v*/user/ должны быть перенаправлены в службу пользователей в том виде, в каком они есть.

Мой application.yml выглядит примерно так

zuul:
  routes:
    users: 
      path: /v*/users/**
      url: ${microservices.usersServiceUrl}
      stripPrefix: false
    accounts: 
      path: /v*/accounts/**
      url: ${microservices.accountsServiceUrl}
      stripPrefix: true

К сожалению, это не дает ожидаемого эффекта.Ничего из путей к учетным записям не удаляется, и они пересылаются в том виде, в каком они есть.

Если я уберу регулярное выражение (v*) и вместо него введу path: /v1/accounts/**, весь префикс /v1/accounts будет удален.По-видимому, регулярное выражение предотвращает удаление префикса, поэтому установка path: /v1/**/accounts/** работает.Тем не менее, я бы хотел не называть все версии в явном виде, поскольку наш API в настоящее время развивается довольно быстро.

Использование глобального zuul.prefix также не помогло, так как вы можете только глобально решить удалить его илиоставьте это нетронутым AFAIK.

Я в основном полагался на эту документацию .

Есть ли лучший способ указать формат перенаправленного URL-адреса?

...