📘 API для работы с модулями Inn-Book
🧩 Архитектура модулей Inn-Book
Модули в Inn-Book создаются с использованием стандартных веб-технологий: - UI: HTML + CSS + JavaScript - Серверная логика: Node.js
🖥️ Гибкая интеграция интерфейса
Интерфейс (UI) модуля может быть встроен: - В любую страницу системы Inn-Book (например, в карточку бронирования) - В отдельный раздел программы - В мобильное приложение Inn-Book UI может: - Обращаться к серверным скриптам модуля через execution - Работать напрямую с внешними системами через API - Использоваться в мобильном клиенте
🔐 Защита кода
Все модули, установленные из Inn-Book App Store, автоматически шифруются. Это обеспечивает защиту вашего исходного кода от несанкционированного доступа и копирования.
Описание:Сервер отеля Inn-Book содержит встроенный API-сервер, обеспечивающий работу с модулями. Доступ осуществляется по API-ключу, который привязан к конкретному модулю.
⚠️ Доступ к API-методам запрашивается при установке модуля. Без явного согласия пользователя все методы API для модуля будут заблокированы. Это обеспечивает контроль и безопасность, исключая несанкционированный доступ к данным отеля.
🔑 Получение API-ключа
API-ключ генерируется автоматически при установке модуля. Для получения отдельно ключа без использования модуля можно: - Создать пустой модуль вручную. - Установить специальный модуль из магазина приложений, который отображает API-ключ и IP-адрес сервера. Ключ доступен в любой HTML-странице модуля через глобальную переменную APIKEY
🌐 Общая структура API-запросов
Запросы отправляются через REST API следующим образом:
function send(m, d) {
fetch(`/modules/api_v1/${m}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'token': APIKEY
},
body: JSON.stringify(d)
})
.then(r => r.ok ? r.json() : Promise.reject(r.status))
.then(console.log)
.catch(e => console.error('Ошибка:', e));
}
Примеры:
// Получение данных по брони
const booking = send('booking', {
act: 'getBookingDataByID',
idBooking: 922
});
// Вызов серверного скрипта из папки execution
const bookingExecution = send('execution', {
act: 'index.js',
idBooking: 922
});
⚙️ Модуль execution
В структуре модуля есть папка execution, содержащая Node.js-скрипты, реализующие серверную логику. Способы запуска: - По cron'у — настраивается в конфигурации модуля. - Как служба (daemon) — также через конфигурацию. Ручной вызов: - Через веб-интерфейс - Из других скриптов Пример вызова:
send('execution', {act: 'index.js',idBooking: 922});
При вызове скрипта через execution, API-ключ доступен как глобальная переменная APIKEY.
⚠️ Ограничения для серверных скриптов. Скрипты в папке execution выполняются в ограниченной среде. Они имеют доступ только к файловой системе внутри директории своего модуля. Любая попытка обращения к внешним директориям или системным файлам будет заблокирована
🧩 Модули и архитектура
Каждый модуль — это изолированный функциональный блок. Он может: - Принимать и обрабатывать запросы через REST API - Выполнять свою логику на стороне сервера - Иметь собственный UI на HTML/JS - Работать с другими модулями и компонентами Inn-Book