У меня есть набор микросервисов, работающих на Python с использованием библиотеки Flask.
У меня есть служба страны, которая получает подстроку по параметру и возвращает страны, которые содержат эту строку.
У меня есть служба состояний, которая получает параметр страны и подстроку для штата и возвращает из этой страны состояния, соответствующие этой подстроке.
У меня есть служба города, которая получает по параметру страну, штат и подстроку и возвращает из этой страны и этого штата города, совпадающие с этой цепочкой.
Услуги вызываются следующим образом:
для страны
http://127.0.0.1:5100/GeographicAddressManagement/Countries?country=AR
Передача по параметру Страна и подстрока состояния
http://127.0.0.1:5102/GeographicAddressManagement/State?country=ARGENTINA&stateOrProvince=CO
Передача по параметру Страна, Штат и подстрока Города
http://127.0.0.1:5102/GeographicAddressManagement/Cities?country=ARGENTINA&stateOrProvince=CORDOBA&city=C
Но теперь они попросили меня настроить службу в соответствии со стандартом, и они хотят, чтобы это был единый сервис, который разрешает поиск в иерархическом порядке, если это так.
Например, если я ищу только по стране, параметр должен быть
http://127.0.0.1:5100/GeographicAddressManagement/AREA?country=AR
Если я собираюсь искать государство в конкретной стране, оно должно быть
http://127.0.0.1:5100/GeographicAddressManagement/ARGENTINA/stateOrProvince=CO
Если это из города:
http://127.0.0.1:5100/GeographicAddressManagement/ARGENTINA/CORDOBA/city=C
стандарт, которому меня просят следовать:
---- / GeographicAddressManagement / страны
Чтобы найти все страны с определенной строкой
---- / GeographicAddressManagement / Аргентина / состояния
Найти все состояния с определенной строкой, принадлежащей ARGENTINA
---- / GeographicAddressManagement / Аргентина / Cordoba / города
Чтобы найти все города с определенной строкой, принадлежащей стране Аргентина, штат Кордова
Каждый отдельный сервис настраивал его следующим образом, размещая его после пространства имен службы следующим образом на примерах
ns = api.namespace('GeographicAddressManagement', description='Prediction of countries')
@ns.route('/Countries', methods=['POST'])
@ns.param('country', 'Substring de Pais (ej:ARGE)', required=True)
Как сделать одну и ту же конечную точку иерархической и, в зависимости от комбинации, вызывать каждый элемент в одном сервисе?