Использование HTTP REST обертки xmysql для работы с MySQL на примере OpenCart

Публикация № 1300693

Разработка - Системная интеграция - Интеграция с WEB

В статье опишу вариант работы с MySQL базой используя HTTP.

Вводные

  • CMS, например OpenCart, использующая MySQL
  • Сайт развернут на VDS и есть возможностью использовать node.js
  • Нужно организовать обмен с CMS
  • Web сервер NGINX

 

Варианты решения

  • Использование модулей работающих с форматом CommerceML и настройкой типового функционала в 1С, пример https://github.com/KirilLoveVE/opencart2-exchange1c или платные аналоги
  • Использование модулей которые реализуют обертку SQL запросов и ответных обработок к ним
  • Использование прямого подключения к MySQL
  • Использование REST API, только платный вариант и со своими проблемами
  • Использование HTTP обертки для MySQL

К данному варианту решения подтолкнула статья про PostgREST //infostart.ru/1c/articles/1217831/

 

Реализация

Для решения задачи использую https://github.com/o1lab/xmysql

Устанавливаю пакет 

npm install -g xmysql

Запускаю сервис

xmysql -h localhost -u opencartuser -p yHL0nVwQrQ5k9PSAYAcU -d opencart

Если подключение прошло успешно, то вижу

          Generating REST APIs at the speed of your thought..

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          Database              :    opencart
          Number of Tables      :    136

          REST APIs Generated   :    2593

          Xmysql took           :    0.3 seconds
          API's base URL        :    localhost:3000

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

Создаю перенаправление на обертку на уровне nginx

 
 Настройки NGINX

 

Проверяю работоспособность

 
 Скриншот

 

Нужно понимать что доступ через обертку имеет полные права на базу и идет без проверки прав доступа, имеет смысл поставить на уровне конфигурации сайта NGINX ограничения по IP (документация) и использовать аутентификацию, например basic (документация). Так же имеет смысл настроить HTTPS и при возможности организовать VPN канал от сервера 1С до VDS.

Останавливаю xmysql.

 

Для запуска в качестве сервиса использую pm2 https://pm2.keymetrics.io/

Добавляю сервис xmysql в pm2 (ссылка на источник)

sudo pm2 start --name "xmysql-api" xmysql -- -h localhost -u opencartuser -p yHL0nVwQrQ5k9PSAYAcU -d opencart

Настраиваю pm2 для автоматического запуска

sudo pm2 startup

sudo systemctl enable pm2-root

Сохраняю настройки запущенных сервисов.

sudo pm2 save

В моем случае (тестовый сервер) сервис pm2 запускается из под root, что некорректно с точки зрения безопасности, имеет смысл добавить пользователя с ограниченными правами и работать с pm2 из под него.

Перезапускаю сервер, проверяю работоспособность.

 

Захожу на сайт "http://oc.malikov.pro/index.php?route=product/product&product_id=43"

Получаю данные товара "GET http://xmysql.malikov.pro/api/oc_product/43"

 
 результат в формате JSON

 

Обновляю цену "PATCH http://xmysql.malikov.pro/api/oc_product/43"

{
    "price": 600
}

 

Проверяю на сайте

 
 Скриншот

 

Итог

При отсутствии API для CMS с базой на MySQL можно относительно просто и безопасно организовать работу с данными.

Для фиксации внешних идентификаторов в 1С можно использовать наработки из //infostart.ru/1c/articles/1256935/

 

Благодарю за внимание.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. bobeni 28.09.20 14:43 Сейчас в теме
Александр, при работе не через API CMS, остаются все риски/проблемы…
Раз напрямую с MySQL, то почему не через «внешние источники»? И зачем рассматривать прямое подключение?
Спасибо!)
2. malikov_pro 644 28.09.20 18:12 Сейчас в теме
(1) "при работе не через API CMS, остаются все риски/проблемы" - согласен, но при данном варианте получается более прозрачно по коду (из опыта работы с OC).

"то почему не через «внешние источники»" - с точки зрения организации ограниченного доступа и контроля проще, для mysql нужно ADODB драйвер подходящий и права на его использование, открывать TCP и порт который хуже прослушивается/контролируется. При обертке выдать только право на доступ к URL по HTTP.

С учетом отсутствия API со стороны CMS и при том что реализацию пишу сам, например https://infostart.ru/1c/articles/1185983/, в некоторых случаях проще написать реализацию на стороне 1С.
Оставьте свое сообщение

См. также

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    56735    Serginio    33    

Как отправить сообщение Telegram в группу?

WEB v8 Россия Бесплатно (free)

Отправка сообщения в группу Telegram.

01.03.2021    373    kite2    0    

Альфа-Авто 5.0 и современные HTTP сервисы

WEB v8 1cv8.cf Автомобили, автосервисы УУ Бесплатно (free)

Решение, позволяющее программным продуктам, работающим на устаревших версиях платформы 1С (8.2), интегрироваться с современными HTTP сервисами. Решение, интегрированное с HTTP-сервисом программы по расчету компонентов для изготовления ЛКМ, описанное в настоящей статье, успешно работает в одном из автосервисов, работающем на устаревшей платформе и конфигурации Альфа-Авто 5.0.

01.03.2021    220    osivv    0    

Доступ из базы 1С к стандартному интерфейсу Odata базы 1С, в которой заведен пользователь

WEB v8 Россия Бесплатно (free)

Есть база, с пользователем/паролем, нужно подключиться к Odata из другой базы 1С, получить элементы справочника.

24.02.2021    478    user823999    6    

Online телефонный справочник из 1С: Зарплата и управление персоналом Промо

WEB Управление персоналом (HRM) Управление персоналом (HRM) v8 ЗУП3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    26426    ruha    16    

Бот Telegram и HTTP сервис в 1С

WEB 8.3.8 Бесплатно (free)

Настройка рабочего вебхука telegram для 1С используя IIS (Internet Information Services - встроенный в windows веб-сервер). Мой опыт.

26.01.2021    4797    solidsun    9    

Интеграция с API WB (Wildberries). Создание карточки товара (спецификации)

WEB v8 1cv8.cf ИТ-компания Россия Бесплатно (free)

Опыт интеграции с API WB (Wildberries), опыт создания карточки товара, получение токенов API WB.

18.01.2021    4309    jenyavp    36    

1С и Умный Дом. Управление голосом

WEB Интернет вещей (IIoT) 8.3.6 Бесплатно (free)

Возможно ли управление устройствами умного дома из 1С, да ещё и голосом? Можно ли без умных колонок Google Home, Alexa, Алиса и иных платформ, а также без приложений от Google, Amazon и других управлять этими устройствами? Мой ответ – ДА, можно, нужно просто иметь умное устройство, имеющее возможность работы в DIY, 1С и программу распознавания голоса и взаимодействия с 1С.

04.01.2021    1791    osivv    15    

Информер для сайта , актуальные релизы 1С + Проверка подписки ИТС. Промо

WEB Администрирование данных 1С Сервисные утилиты Бесплатно (free)

Небольшой код который встраивается на сайт и выводит информацию о последних релизах конфигураций 1С

12.09.2014    40937    Malfarion    34    

HTML редактор/editor (Wysiwyg) для WebKit 1С (CMS, B2B), альтернатива TinyMCE и стандартному ФорматированныйДокумент

WEB Интеграция v8 v8::УФ 1cv8.cf Бесплатно (free)

Suneditor - отличная замена HTML редактору TinyMCE (бесплатному), в публикации с открытым кодом подключим его в 1С с WebKit, скачать HTMLeditor обработку можно бесплатно.

28.12.2020    1787    SizovE    23    

1С и Умный дом

WEB Интернет вещей (IIoT) 8.3.8 Бесплатно (free)

Возможно ли управление устройствами умного дома из 1С? Можно ли, минуя сложные настройки ZigBee, Z-Wave и иных платформ, а также без приложений от Google, Amazon и других управлять этими устройства? Мой ответ – ДА, можно, нужно просто иметь умное устройство, имеющее возможность работы в DIY, ну и, естественно, 1С.

21.12.2020    1271    osivv    8    

[TinyMCE] - редактор HTML WYSIWYG. Интеграция во все виды управляемого и обычного приложения

WEB 8.3.14 Бесплатно (free)

В статье рассмотрены вопросы использования во всех режимах работы 1С Предприятие 8.3 редактора TinyMCE в поле HTML дополнительного функционала.

14.12.2020    774    user1206119    0    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    42064    YPermitin    41    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

Практика программирования WEB Универсальные функции v8 v8::УФ 1cv8.cf Бесплатно (free)

Редактор HTML платформы 1С простой и очень удобный для небольших задач, однако ПолучитьHTML возвращает отдельно картинки и отдельно целиком HTML страницу со ссылкой на имена этих картинок, что неудобно для отправки в базу данных сайта/интернет-магазина/веб-приложения/B2B. Разберем на открытом коде, как решить эту проблему, напишем универсальную функцию получения значения любого тега HTML на регулярных выражениях. Бонусом - возможность редактировать теги HTML в текстовом режиме.

24.11.2020    693    SizovE    2    

Как сделать интеграцию (обмен) с интернет-магазином? Пошаговый план действий (Часть 1)

WEB v8 1cv8.cf УУ Бесплатно (free)

C 2011 года я занимаюсь интеграцией с интернет-магазинами и за это время, наверное, повидал все. Делал интеграцию как «культурными», так и «экзотическими» способами. Количество магазинов исчисляется сотнями. В этой серии статей я буду делиться своим опытом, а также выкладывать какие-то полезные наработки.

19.11.2020    3356    markbraer    9    

Чтение вложенных свойств Структур Структуры, Соответствий, свойства через точку, разбор JSON

Практика программирования WEB Интеграция Универсальные функции v8 Бесплатно (free)

JSON: {user.device.type} - как получить значение {type}? А если вложенность значительно глубже? Как проверить, что оно заполнено или удалить его - всё это в публикации с открытым кодом и даже без рекурсии. Бонусом разбор дерева значений - ДанныеФормыЭлементДерева, СтрокаДереваЗначений.

17.11.2020    1638    SizovE    2    

Заготовка для загрузки файлов по ftp Промо

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    30774    anig99    6    

Web Dashboard (мобильная и десктопная версия): оптимальная схема организации взаимодействия с зоопарком систем

WEB v8 Бесплатно (free)

Задача: из множества систем (1С:ERP, 1C:CRM, Кронос:WMS, 1С:Розница, 1С:УПП...) оперативно и онлайн осуществлять мониторинг на телефоне/десктопе/планшете/телевизоре бизнес-аналитику в дашборде для директора. Рассмотрим в статье, как правильно интегрировать между собой все базы, какие для этого инструменты использовать.

10.11.2020    5026    SizovE    2    

Как я бесплатно пишу чат-ботов WhatsApp на 1С

WEB Бесплатно (free)

На разработку чат-бота требуется время. Как правило, время уходит на ознакомление с API, отладку, приемку. Как сэкономить и не платить за использование API на время разработки? Делюсь своим опытом.

02.11.2020    2018    andrew_shamin    10    

Отладка модуля ДиадокПро

WEB v8 1cv8.cf Бесплатно (free)

В обработке ДиадокПро все дополнительные модули встроены во внешние обработки, которые хранятся в макетах. Это усложняет процесс самостоятельной интеграции, так как теряется возможность попасть в них в режиме отладки. Но не всё так страшно, поэтому ниже инструкция)

30.10.2020    1854    Максим-777    13    

Организация удаленного доступа к корпоративной информационной системе — это просто ! Промо

Внешние источники данных Монитор заказов WEB Монитор заказов Бесплатно (free)

Хочу поделиться своим опытом создания web морды к корпоративной информационной системе на базе 1С. Необходимо организовать сбор заказов от удаленных пользователей. - Каждый пользователь видит свой набор данных, и работает со своими документами. - Доступ по логину/паролю, работа в основном с планшетов (iPad) или с десктопа. - Сервер должен находиться за пределами организации. - Себестоимость 1 пользователя не более 10$ за месяц. - Использование в основном мобильного канала связи GPRS (~100 КБ/с).

31.08.2012    28874    avhrst    13    

JSON примеры меню B2B web-приложения "Личный кабинет" на движке EDIbot для телефона/десктопа

WEB v8 Бесплатно (free)

Рассмотрим на примерах работу движка EDIbot при организации меню B2B "Личного кабинета" (мобильная версия, версия десктоп) грузовладельца WMS-системы.

29.10.2020    881    SizovE    0    

Обмен с сайтом посредством Post-запроса, json

WEB v8 1cv8.cf Бесплатно (free)

Задача - передавать на сайт объекты с наименованием и уникальным идентификатором (УИ), которые изменяются в 1С. Также нужно сохранять историю отправленных пакетов.

29.10.2020    4170    John_d    26    

Организация HTTP публикации каталога товаров используя PostgREST

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу порядок установки настройки и использования PostgREST на примере организации каталога товаров.

05.10.2020    929    malikov_pro    2    

Интеграционная прослойка(middleware) на Golang. Часть 5 - Обмен с 1С через HTTP-сервисы платформы

WEB v8 Бесплатно (free)

В этой статье научим прослойку отправлять данные в 1С, для этого используем HTTP-сервисы платформы. Обменяемся данными с новым справочником Клиенты. Но главное создадим HTTP-сервис для получения сообщений из очереди RabbitMQ.

28.09.2020    1542    dmitry-irk38    4    

Отладка http сервиса

WEB v8 Бесплатно (free)

При разработке http сервиса возникает ситуация, а как протестировать http сервис? Создали мы сервис, настроили шаблоны, передали, если нужно параметры, открываем браузер заполняем строку подключения и БАХ, ошибка. Что делать?

23.09.2020    2566    hpi    10    

Учимся создавать http сервисы (часть вторая). Передача параметра в http сервис

WEB v8 1cv8.cf Бесплатно (free)

Пошаговое руководство по созданию http-сервиса (часть вторая). Передача параметра в http сервис.

22.09.2020    5444    hpi    6    

Организация данных и вариант обработки для организации обмена с сайтом

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант организации данных и обработки для обмена с сайтом.

22.09.2020    1406    malikov_pro    4    

Формирование списка документов и скачивание печатной формы документа через веб-сайт с использованием HTTP-сервиса, плюс особенности авторизации

Практика программирования Обмен данными 1С WEB v8 1cv8.cf Бесплатно (free)

В статье показан пример, как реализовать формирование списка документов клиента/пользователя по коду, а затем скачать его (документа) печатную форму по ссылке

18.09.2020    1040    R_o_n_n_y    3    

Формирование HTTP запроса формата multipart/form-data с двоичными данными, используя ПотокВПамяти

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант формирования запроса

11.09.2020    3089    malikov_pro    11    

Дневник боли и страданий. Как я переходил от The Bat! к MS Outlook

WEB Бесплатно (free)

Мой опыт перехода от The Bat! к MS Outlook. Сравнение двух программ, киллер-фичи, лайфхаки и рецепты из интернета. Все в одном месте и проверено автором на актуальных релизах сентября 2020 года.

02.09.2020    1655    gubanoff    15    

Формирование документа Goggle Docs из шаблона используя Google Apps Script

WEB Бесплатно (free)

В статье опишу работу скрипта для формирования документа с публикацией по HTTP.

25.08.2020    1271    malikov_pro    0    

Ферма приложений на Kubernetes

WEB v8 Бесплатно (free)

При эксплуатации большого количества информационных систем 1С, предоставляющих интернет-сервисы, возникают проблемы, связанные с зависимостью от производительности и стабильности веб-сервера. Как объединить отдельно стоящие веб-сервера с помощью платформы Kubernetes для централизованного мониторинга всех опубликованных интернет-сервисов на конференции Infostart Event 2019 Inception рассказал программист компании BIA Technologies Владимир Кирбаба.

24.08.2020    1566    ComboBoy    0    

Использование шаблонного процессора для формирования HTML страниц

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу использование шаблонного процессора Handlebars запущенного на Node.js

24.08.2020    1643    malikov_pro    26    

Использование скриптов при формировании запросов используя Postman

WEB Бесплатно (free)

В статье опишу применение JS скриптов а postman при работе с API.

22.08.2020    2431    malikov_pro    8    

Загрузка или обновление файла на яндекс диске через rest-api

Практика программирования Файловые протоколы обмена, FTP WEB v8 Бесплатно (free)

Коллеги, в данной публикации я хочу поделиться кодом, с помощью которого можно загрузить файл на яндекс диск или обновить существующий.

12.08.2020    2606    pavelpribytkin96    10    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    6800    YPermitin    19    

Загрузка или обновление файла на гугл диске

Практика программирования Файловые протоколы обмена, FTP WEB v8 1cv8.cf Бесплатно (free)

Коллеги, в данной публикации я хочу поделиться кодом, с помощью которого можно загрузить файл на гугл диск или обновить существующий.

06.08.2020    1722    pavelpribytkin96    6    

Использование Yandex Translate (Яндекс.Переводчик)

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант подключения и использования Yandex Translate.

08.07.2020    4383    malikov_pro    8    

Когда хотим знать IP клиента...

WEB v8 Бесплатно (free)

В процессе разработки web приложения на 1С, и это не шутка))), а пожелание заказчика, возникла ситуации когда понадобилось знать, с какого IP подключался клиент.

03.07.2020    5998    IMihalev    10    

Ограничение доступа к HTTP публикациям 1С сервера используя NGINX

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант ограничения доступа к HTTP публикациям 1С сервера используя NGINX.

02.07.2020    7324    malikov_pro    7    

Структура обработки загрузки цен и остатков поставщика с примерами и комментариями

Внешние источники данных WEB v8 1cv8.cf Россия Бесплатно (free)

В статье опишу структуру обработки по загрузке цен и остатков от поставщика с примерами.

27.06.2020    1886    malikov_pro    0    

Приемы описания документации API используя нотацию RAML

WEB Россия Бесплатно (free)

В статье опишу приемы, которые использую в своей работе, и которые позволяют быстро реализовать описание.

24.06.2020    1616    malikov_pro    2    

Вариант использования документа "Операция по Яндекс.Кассе" для других сервисов по оплате через интернет

WEB v8 1cv8.cf Россия Бесплатно (free)

В статье рассмотрю организацию эквайринга в УТ 11.4 и доработки для создания заказов на оплату к стороннему сервису, как пример Сбербанк.

24.06.2020    1506    malikov_pro    3    

Работа с AliExpress через API

WEB v8 Бесплатно (free)

В публикации опишу подход работы с API AliExpress и примеры кода.

23.06.2020    5861    malikov_pro    23    

Не программируй - вставляй и копируй. OAuth 2.0 авторизация API Google, получение токенов доступа (refresh и access token)

WEB Облачные сервисы, хостинг Бесплатно (free)

Без программирования, в несколько кликов - простой и быстрый способ трехногой авторизации по протоколу OAuth 2.0 в Google APIs. Получение refresh и первого access token для использования в HTTP-запросах из 1С к API Google. Для приложений типа "Компьютеры".

09.06.2020    5329    uno-c    1