Я пытаюсь настроить маршрутизатор вызовов 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-адреса?