Назначение протокола
Данный протокол предназначен для интеграции с:
- товаро-учётными системами;
- CRM;
- CDI-MDM;
- ETL-инструментами BI-систем;
- backend-сервером мобильных приложений;
- backend-сервером личных веб-кабинетов корпоративных порталов.
Жизненный цикл протокола
Разработчик LOYA оставляет за собой право в изменять данный протокол с целью внесения уточнений, исправлений и устранения противоречивых данных.
Общие сведения
LOYA в контексте данного описания является поставщиком REST-сервисов и представляет собой web-сервер.
LOYA – это система с сервисно-ориентированной архитектурой и открытым REST-протоколом, который не накладывает никаких ограничений на последовательность вызовов (state-less протокол), но при этом также не учитывает специфических особенностей REST-клиентов (таких как товароучётная система, мобильное приложение и веб-кабинет).
Для одной бизнес-транзакции (например, регистрации нового покупателя в личном кабинете), REST-клиент может отправлять на сервер LOYA несколько REST-команд:
- создать покупателя;
- создать карту;
- привязать карту к покупателю.
Не накладывается никаких ограничений ни на перечень данных команд, ни на последовательность вызовов. Результат работы бизнес-транзакций REST-клиента целиком и полностью является зоной ответственности разработчиков данного REST-клиента. Разработчик LOYA, при этом, несомненно, несёт ответственность за работу REST-API как такового, в отрыве от бизнес-логики того или иного REST-клиента.
Также важно понимать, что LOYA – это сервер для корпоративных backend-серверов соответствующих систем. Т.е. непосредственное подключение к серверу LOYA мобильных приложений, АРМ менеджеров-категорийщиков, кластеров веб-кабинетов, прямых AJAX-запросов из браузеров личных кабинетов и т.п. категорически не допускается. Допускается обмен данными только между backend-серверами.
Очевидно, что REST-протокол имеет транспортный уровень HTTP, который не содержит элементов гарантированной доставки пакетов прикладного протокола. Если допускается использование ненадежных каналов связи, то отказоустойчивость и гарантия доставки прикладных пакетов должна решаться соответствующими REST-клиентами. Для этого LOYA имеет полный набор CRUD-операций по каждому критичному ресурсу (товары, клиенты, карты и т.п.).
Величина пропускной способности, допустимые задержки в сети, частота и длительность разрывов лежат в рамках зоны ответственности разработчиков REST-клиента и внутренних IT-служб, обслуживающих инфраструктуру, в которой располагаются сервера.
Работа с большими массивами данных (например, полное обновление справочников товаров), допускается только в периоды времени, когда с системой нет активной работы пользователей. Оптимальным периодом времени является нерабочее время операторов. В противном случае, могут возникнуть некоторые сложности, связанные с общим временем отклика системы.
При этом, допускается изменение отдельных объектов через относительно большой период времени. Например, изменение одного или нескольких товаров допускается в любое время, при условии, что такие запросы создаются синхронно с действиями операторов товароучётной системы, а не являются результатом автоматических массовых вычислений. Подобные запросы изменения отдельных объектов не создают ощутимой дополнительной нагрузки.
Описание протокола
Весьма динамичное развитие LOYA требует легкого и эффективного взаимодействия с внешними сервисами, которым необходимо оперативно получать новые возможности протокола API. Для облегчения процесса интеграции LOYA со сторонними сервисами, генерирование внешней API-документации LOYA можно осуществлять из swagger-схем и, таким образом, в любое время получать самое актуальное описание внешнего API для каждой версии LOYA.