Интеграция 1С и CMS WordPress посредством Rest API сайта. Первый шаг
Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции 1С с комментариями внутри.
- Описание
- Подробнее
Описание
Интеграция 1С и CMS WordPress посредством Rest API сайта. Первый шаг.
Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции 1С с комментариями внутри.
Преамбула.
Эта статья является логическим продолжением и дополнением этой моей статьи. А также полностью с ней взаимосвязанной, отсылки к ней будут периодически здесь появляться.
Рейтинг CMS.
Как и в предыдущей статье WordPress занимает лидирующие позиции по количеству установок и работающих сайтов в мире, и не только не сдает своих позиций, но и понемногу растет:
А так как WordPress является платформой для электронной коммерции, соответственно магазин WooCommerce, так же занимает лидирующие позиции в другом мировом рейтинге:
Это конечно прекрасно, но помимо достоинств, описанных в этой статье, есть еще один немаловажный фактор, о котором мне хотелось бы сообщить. Это формат обмена данными между 1С и сайтом электронной коммерции.
JSON vs. XML
Почему JSON и XML? XML является стандартом де-факто в 1С. JSON, на мой взгляд, имеет значительно больше перспектив, проще, удобнее.
От настольных компьютеров до веб-и мобильных устройств, почти все компьютерные приложения, которые мы используем сегодня, полагаются на один из двух основных стандартов сообщений: JSON и XML. Сегодня JSON является наиболее широко используемым форматом, но он обогнал XML только за последние пять лет. Быстрый онлайн-поиск «JSON vs. XML» принесет бесчисленное количество статей и постов в блогах, сравнивающих эти два стандарта и составляющих постепенно расширяющуюся предвзятость, восхваляющую простоту JSON и критикующую многословие XML. Многие статьи настаивают на том, что JSON превосходит XML из-за его краткой семантики и дисконтирует XML как неэффективный и запутанный стандарт прошлого, и здесь мне тяжело не согласиться.
Почему JSON стал более популярным, чем XML
Я на деюсь все знают, что JSON-это родной формат данных в приложениях JavaScript. Написание приложений на JavaScript почти полностью требует использования JSON для обмена данными. Возможны и другие форматы, но они требуют больше усилий, чем в случае с JSON. По мере того как JavaScript набирал популярность для разработки приложений, JSON вплотную следовал за ним как простой в использовании и изначально интегрированный формат обмена данными.
История и эволюционный путь интернета сыграли значительную роль в популяризации JSON. Согласно Stack Overflow, теперь больше вопросов задается о JSON, чем о других форматах обмена данными.
Согласно Google Trends, похожая ситуация наблюдается при сравнении интереса поиска для JSON и XML.
Основная разница между JSON и XML
JSON | XML |
JSON-объект имеет тип | XML-данные не содержат типов |
Типы JSON: строка, число, массив, логическое значение | Все данные XML должны быть строковыми |
Данные легко доступны в виде объектов JSON. | Данные XML должны быть проанализированы. |
JSON поддерживается большинством браузеров. | Кросс-браузерный анализ XML может быть сложным |
JSON не имеет возможностей отображения. | XML предлагает возможность отображения данных, потому что это язык разметки. |
JSON поддерживает только текстовые и числовые данные. | XML поддерживает различные типы данных, такие как число, текст, изображения, диаграммы, графики и т. Д. Он также предоставляет параметры для передачи структуры или формата данных с фактическими данными. |
Получить значение легко | Получить значение сложно |
Поддерживается многими инструментами Ajax | Не полностью поддерживается инструментарием Ajax |
Полностью автоматизированный способ десериализации / сериализации JavaScript. | Разработчики должны написать код JavaScript для сериализации / десериализации из XML |
Нативная поддержка объекта. | Объект должен быть выражен соглашениями — в основном пропущено использование атрибутов и элементов. |
Он поддерживает только кодировку UTF-8. | Он поддерживает различные кодировки. |
Это не поддерживает комментарии. | Поддерживает комментарии. |
Файлы JSON легко читаются по сравнению с XML. | XML-документы относительно сложнее для чтения и интерпретации. |
Он не обеспечивает никакой поддержки пространств имен. | Он поддерживает пространства имен. |
Это менее защищено. | Это более безопасно, чем JSON. |
JSON Code vs XML Code
Пример JSON
{
“firstName”: “Jonathan”,
“lastName”: “Freeman”,
“loginCount”: 4,
“isWriter”: true,
“worksWith”: [“Spantree Technology Group”, “InfoWorld”],
“pets”: [
{
“name”: “Lilly”,
“type”: “Raccoon”
}
]
}
Приведенная выше структура четко определяет некоторые атрибуты человека. Он включает в себя имя и фамилию, количество раз, когда человек вошел в систему, является ли этот человек писателем, список компаний, с которыми он работает, и список домашних животных этого человека (в данном случае только один). Структура, подобная приведенной выше, может быть передана с сервера в веб-браузер или мобильное приложение, которое затем выполнит некоторые действия, такие как отображение данных или сохранение их для последующего использования.
Пример XML
<?xml version="1.0"?>
<person>
<first_name>Jonathan</first_name>
<last_name>Freeman</last_name>
<login_count>4</login_count>
<is_writer>true</is_writer>
<works_with_entities>
<works_with>Spantree Technology Group</works_with>
<works_with>InfoWorld</works_with>
</works_with_entities>
<pets>
<pet>
<name>Lilly</name>
<type>Raccoon</type>
</pet>
</pets>
</person>
Помимо того, что XML является более подробным (в данном случае ровно в два раза более подробным), он также вносит некоторую двусмысленность при синтаксическом анализе в удобную для JavaScript структуру данных. Преобразование XML в объект JavaScript (да и в 1С будет не мало) может занять от десятков до сотен строк кода и в конечном счете требует настройки на основе конкретного анализируемого объекта. Преобразование JSON в объект JavaScript занимает одну строку кода (и в 1С три) и не требует каких-либо предварительных знаний о анализируемом объекте.
С точки зрения обычного человека выбор здесь очевиден. Ведь даже судя по размеру встроенной справки 1С по работе с XML и JSON можно сделать вывод, что с JSON работать проще.
За последние 15 лет JSON стал повсеместным в интернете. Сегодня этот формат является наиболее предпочтительным практически для всех общедоступных веб-сервисов, а также часто используется для частных веб-сервисов.
JSON затмил XML как предпочтительный формат обмена данными для веб-приложений и веб-служб.
Возможно, многим покажется, что здесь избыточно рассказывается о преимуществах JSON. Безусловно, у JSON есть свои недостатки, у XML есть свои преимущества. Но я рассказываю об этом «со своей колокольни». Что касается WordPress, там естественно имеется поддержка XML. Но безусловные преимущества JSON над XML, такие как: простота написания кода, объем передаваемых данных, перспектива, однозначно предопределили мой выбор.
Думаю, что, почитав подробнее в интернете об JSON vs. XML, вы тоже сделаете свой выбор.
Но хватит про выбор, давайте начнем и сделаем что-нибудь.
Запрос данных из WordPress из 1С посредством REST API.
С момента написания прошлой статьи ничего лучше плагина Advanced Access Manager (ААМ) не появилось, поэтому продолжим с ним. Все подробности по настройке можно прочитать здесь.
Весь приводимый ниже код использовался в обработке написанной под управляемые формы. С таким же успехом его можно использовать в обычных формах (версия платформы 1С должна быть не ниже 8.3.6).
Условно постоянные значения, используемые в обработке (константы).
1. СоединениеССайтом_JWTServer. Строка подключения к сайту (host) без https://
2. СоединениеССайтом_JWToken. Токен полученный от сайта
3. СоединениеССайтом_Таймаут. Таймаут (секунд) подключения к сайту
4. СоединениеССайтом_ЭтоHTTPS_Соединение. Флаг указывающий на HTTPS-соединение.
В свой конфигурации вам надо будет их создать.
Небольшая ремарка, HTTP-соединение тестировалось, работает как надо.
Используемые маршруты WordPress.
- /wp-json/aam/v2. Выдает полный перечень сервисов плагина авторизации.
- /wp-json/aam/v2/jwt/validate. Валидация (проверка валидности) имеющегося токена.
- /wp-json/aam/v2/jwt/refresh. Обновление токена.
- /wp-json/aam/v2/jwt/revoke. Отзыв токена.
- /wp-json/aam/v2/authenticate. Аутентикация пользователя на сайте посредством пары «логин : пароль».
- /wp-json/wp/v2/categories/. Запрос категорий постов сайта.
- /wp-json/wp/v2/media/. Запрос списка картинок сайта.
- /wp-json/wp/v2/posts/. Запрос списка постов сайта.
- /wp-json/wp/v2/pages/. Запрос списка страниц сайта
В контексте данной статьи п.п. 3, 4, 5 не используются, за ненадобность (но вы можете поэкспериментировать самостоятельно, «authenticate» работает точно). Остальные приведены справочно, для демонстрации работоспособности кода. См. видео в конце статьи.
Конечные точки WordPress.
- POST.
- GET.
Процедуры и функции используемые в модуле формы.