Мастер-Тур(15):API для разработки онлайн поиска и бронирования — различия между версиями
| [досмотренная версия] | [досмотренная версия] |
Biryukov (обсуждение | вклад) (→Регистрация частного лица (PersonalRegistration)) |
Biryukov (обсуждение | вклад) (→Установка) |
||
| (не показано 168 промежуточных версий 8 участников) | |||
| Строка 12: | Строка 12: | ||
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br /> | Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br /> | ||
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'') | После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'') | ||
| + | |||
| + | ==Swagger== | ||
| + | Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI'' | ||
==Список методов== | ==Список методов== | ||
| Строка 17: | Строка 20: | ||
Последовательность вызова методов сервиса<br /> | Последовательность вызова методов сервиса<br /> | ||
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]] | [[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]] | ||
| + | |||
| + | ===Информация о состоянии службы поиска (statusCache)=== | ||
| + | Метод выводит информацию о состоянии службы поиска при ее загрузке. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/statusCache? | ||
| + | * Принимаемые параметры: | ||
| + | ** нет принимаемых параметров | ||
| + | * Возвращаемый результат: | ||
| + | ** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена) | ||
| + | ** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена'' | ||
| + | ** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название) | ||
| + | ** '''Iteration''' – порядковый номер считаемого справочника кеша | ||
| + | ** '''CacheCount''' – общее количество кешей | ||
| + | ** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока: | ||
| + | *** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД'' | ||
| + | *** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234'' | ||
| + | *** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"'' | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода Settings | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/statusCache | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода statusCache (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "Initialized": false, | ||
| + | "Status": "Запущена инициализация кэшей", | ||
| + | "CacheName": "ToursSearchView", | ||
| + | "Iteration": 10, | ||
| + | "CacheCount": 112, | ||
| + | "ProcessMessage": "Загрузка кэшей из БД" | ||
| + | } | ||
| + | { | ||
| + | "Initialized": false, | ||
| + | "Status": "Запущена инициализация кэшей", | ||
| + | "CacheName": "HotelScheme", | ||
| + | "Iteration": 109, | ||
| + | "CacheCount": 112, | ||
| + | "ProcessMessage": "tours load: 956 / 1234" | ||
| + | } | ||
| + | { | ||
| + | "Initialized": false, | ||
| + | "Status": "Запущена инициализация кэшей", | ||
| + | "CacheName": "ActualFilters", | ||
| + | "Iteration": 112, | ||
| + | "CacheCount": 112, | ||
| + | "ProcessMessage": "Actual filter processed: 783012 / 3865687" | ||
| + | } | ||
| + | { | ||
| + | "Initialized": true, | ||
| + | "Status": "Инициализация кэшей завершена", | ||
| + | "CacheName": null, | ||
| + | "Iteration": 0, | ||
| + | "CacheCount": 0, | ||
| + | "ProcessMessage": null | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
===Авторизация (Token)=== | ===Авторизация (Token)=== | ||
| Строка 75: | Строка 140: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. | + | ** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком |
| − | ** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. | + | ** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска) |
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой) | ** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой) | ||
** '''CacheReady''' – статус готовности службы поиска к работе (true/false) | ** '''CacheReady''' – статус готовности службы поиска к работе (true/false) | ||
| Строка 105: | Строка 170: | ||
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован" | *** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован" | ||
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован". | *** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован". | ||
| − | + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | |
| + | ** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null) | ||
| + | ** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null) | ||
| + | ** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null) | ||
| + | ** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null) | ||
| + | ** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null) | ||
| + | ** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null) | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
| Строка 182: | Строка 253: | ||
"ShowHotelImagesInSearch": true | "ShowHotelImagesInSearch": true | ||
"CacheReadyMessage": "Кеш инициализирован" | "CacheReadyMessage": "Кеш инициализирован" | ||
| + | "nodeId": 2147483647, | ||
| + | "FullPaymentPeriod": null, | ||
| + | "FullPaymentCheckin": 5, | ||
| + | "PrePaymentPeriod": null, | ||
| + | "PrePaymentCheckin": 10, | ||
| + | "PrePaymentPercent": 50.0, | ||
| + | "PrePaymentCu": null | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 187: | Строка 265: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка списка | + | ===Выгрузка списка валют в онлайне (Currency)=== |
| − | Метод возвращает список | + | Метод возвращает список используемых валют. |
* Формат запроса: | * Формат запроса: | ||
| − | ** GET .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/Currency |
* Принимаемые параметры: | * Принимаемые параметры: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
| Строка 207: | Строка 285: | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода Currency |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | GET http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/Currency |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода Currency (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
[ | [ | ||
| Строка 243: | Строка 321: | ||
"Symbol": "$", | "Symbol": "$", | ||
"Key": 1 | "Key": 1 | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
} | } | ||
] | ] | ||
| Строка 260: | Строка 328: | ||
| − | ===Выгрузка | + | ===Выгрузка курсов валют (CurrencyRates) начиная с 15.7=== |
| − | Метод возвращает список | + | Полный аналог метода [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Выгрузка курсов валют (GetCurrencyRates)|Выгрузка курсов валют (GetCurrencyRates)]]<br /> |
| + | Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне'' | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** GET .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/CurrencyRates |
* Принимаемые параметры: | * Принимаемые параметры: | ||
| − | ** | + | ** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день) |
| + | ** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день) | ||
| + | ** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9). | ||
| + | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** '''Code''' – код валюты | + | ** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6) |
| − | ** '''Name''' – наименование валюты | + | ** '''currencyId''' – идентификатор валюты, курс которой приводится |
| − | ** '''IsMain''' – признак валюты «Главная» | + | ** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''') |
| + | ** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода CurrencyRates | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода CurrencyRates (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 1, | ||
| + | "Rate": 91.429200, | ||
| + | "Date": "18.09.2024" | ||
| + | }, | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 2, | ||
| + | "Rate": 101.505700, | ||
| + | "Date": "18.09.2024" | ||
| + | }, | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 1, | ||
| + | "Rate": 91.671200, | ||
| + | "Date": "19.09.2024" | ||
| + | }, | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 2, | ||
| + | "Rate": 102.039000, | ||
| + | "Date": "19.09.2024" | ||
| + | } | ||
| + | ] | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка списка всех валют (getAllCurrencies)=== | ||
| + | Метод возвращает список всех валют. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/AllCurencies/getAllCurrencies | ||
| + | * Принимаемые параметры: | ||
| + | ** нет принимаемых параметров | ||
| + | * Возвращаемый результат: | ||
| + | ** '''Code''' – код валюты | ||
| + | ** '''Name''' – наименование валюты | ||
| + | ** '''IsMain''' – признак валюты «Главная» | ||
** '''IsNational''' – признак валюты «Национальная» | ** '''IsNational''' – признак валюты «Национальная» | ||
** '''IsoCode''' – ISO код валюты | ** '''IsoCode''' – ISO код валюты | ||
| Строка 275: | Строка 399: | ||
** '''Symbol''' – символ валюты (обрабатывается с 15.7) | ** '''Symbol''' – символ валюты (обрабатывается с 15.7) | ||
** '''Key''' – идентификатор валюты | ** '''Key''' – идентификатор валюты | ||
| − | |||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода getAllCurrencies |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | GET http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода getAllCurrencies (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
[ | [ | ||
| Строка 316: | Строка 439: | ||
"Symbol": "$", | "Symbol": "$", | ||
"Key": 1 | "Key": 1 | ||
| + | }, | ||
| + | { | ||
| + | "Code": "гр", | ||
| + | "Name": "Гривна", | ||
| + | "IsMain": false, | ||
| + | "IsNational": false, | ||
| + | "IsoCode": "UAH", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "₴", | ||
| + | "Key": 6 | ||
} | } | ||
] | ] | ||
| Строка 322: | Строка 455: | ||
</div></div><br /> | </div></div><br /> | ||
| − | === | + | |
| − | Метод | + | ===Получение сконвертированных цен (convertFilterPrice)=== |
| + | Метод возвращает сконвертированные цен для допфильтра ''Цена'' (используется в canary) | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** GET .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/AllCurencies/convertFilterPrice |
| − | * Принимаемые параметры: | + | * Принимаемые параметры ( '''*''' – обязательный): |
| − | ** | + | ** '''SourceRateKey *''' – ключ исходной валюты конвертации |
| + | ** '''TargetRateKey *''' – ключ валюты, в которую будет произведена конвертация | ||
| + | ** '''MinPrice *''' – значение минимальной цены, которое будет участвовать в конвертации | ||
| + | ** '''MaxPrice *''' – значение максимальной цены, которое будет участвовать в конвертации | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** '''Key''' – идентификатор услуги | + | ** '''m_Item1''' – сконвертированная минимальная цена |
| − | ** '''Code''' – код услуги | + | ** '''m_Item12''' – сконвертированная максимальная цена |
| − | ** '''Name''' – наименование услуги (русский) | + | |
| − | ** '''NameLat''' – наименование услуги (английский) | + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример |
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода convertFilterPrice | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/AllCurencies/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода convertFilterPrice (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "m_Item1": 12.035142616440004814057046576, | ||
| + | "m_Item2": 240.70285232880009628114093152 | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка квотируемых услуг системы (QuotedServices)=== | ||
| + | Метод производит выгрузку услуг с признаком «Квотируемая» | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/QuotedServices | ||
| + | * Принимаемые параметры: | ||
| + | ** нет принимаемых параметров | ||
| + | * Возвращаемый результат: | ||
| + | ** '''Key''' – идентификатор услуги | ||
| + | ** '''Code''' – код услуги | ||
| + | ** '''Name''' – наименование услуги (русский) | ||
| + | ** '''NameLat''' – наименование услуги (английский) | ||
** '''IsDuration''' – наличие продолжительности у услуги | ** '''IsDuration''' – наличие продолжительности у услуги | ||
** '''IsCity''' – наличие города у услуги | ** '''IsCity''' – наличие города у услуги | ||
| Строка 430: | Строка 594: | ||
** GET .../TourSearchOwin/Destination? | ** GET .../TourSearchOwin/Destination? | ||
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']]) | + | ** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']]) |
| + | ** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена) | ||
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) | ** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
** '''Name''' – название страны | ** '''Name''' – название страны | ||
** '''Key''' – идентификатор страны | ** '''Key''' – идентификатор страны | ||
| − | ** '''DestinationType''' – тип результата (всегда возвращается | + | ** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1) |
| + | ** '''IsExist''' – не используется | ||
| + | ** '''Data''' – массив данных для контекстного поиска | ||
| + | *** '''CityKey''' – код города | ||
| + | *** '''CityName''' – Название | ||
| + | *** '''HotelKey''' – код отеля | ||
| + | *** '''HotelName''' – название отеля | ||
| + | *** '''ResortKey''' – код курорта | ||
| + | *** '''ResortName''' – название курорта | ||
| + | |||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| Строка 442: | Строка 616: | ||
Вызов метода Destination | Вызов метода Destination | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| + | |||
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1 | GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 448: | Строка 623: | ||
[ | [ | ||
{ | { | ||
| − | " | + | "Data": null, |
| − | "Key": | + | "DestinationType": 1, |
| − | " | + | "IsExist": false, |
| + | "Key": 90, | ||
| + | "Name": "Австрия" | ||
| + | |||
| + | |||
}, | }, | ||
{ | { | ||
| − | " | + | "Data": null, |
| − | "Key": | + | "DestinationType": 1, |
| − | " | + | "IsExist": false, |
| + | "Key": 53, | ||
| + | "Name": "Тайланд" | ||
| + | |||
| + | |||
}, | }, | ||
{ | { | ||
| − | " | + | "Data": null, |
| − | "Key": | + | "DestinationType": 1, |
| − | " | + | "IsExist": false, |
| + | "Key": 460, | ||
| + | "Name": "Россия" | ||
| + | |||
| + | |||
} | } | ||
| + | ] | ||
| + | GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
| + | { | ||
| + | "Name": "Австрия", | ||
| + | "Key": 90, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Data": | ||
| + | [ | ||
| + | { | ||
| + | "CityKey": 35, | ||
| + | "CityName": "Вена", | ||
| + | "HotelKey": 178, | ||
| + | "HotelName": "Ananas, 5+++*", | ||
| + | "ResortKey": 232, | ||
| + | "ResortName": "Малина" | ||
| + | }, | ||
| + | { | ||
| + | "CityKey": 35, | ||
| + | "CityName": "Вена", | ||
| + | "HotelKey": 20748, | ||
| + | "HotelName": "Dev, 1-4*Boutique", | ||
| + | "ResortKey": 0, | ||
| + | "ResortName": "" | ||
| + | }, | ||
| + | ], | ||
| + | } | ||
| + | { | ||
| + | "Name": "Тайланд", | ||
| + | "Key": 53, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Data": | ||
| + | [ | ||
| + | { | ||
| + | "CityKey": 415, | ||
| + | "CityName": "Пхукет", | ||
| + | "HotelKey": 5263, | ||
| + | "HotelName": "7Q Hotel, HV", | ||
| + | "ResortKey": 123, | ||
| + | "ResortName": "Пхукет" | ||
| + | } | ||
| + | ], | ||
| + | }, | ||
| + | { | ||