Тема: REST API для ReadyScript

Есть мысль написать REST API для ReadyScript
Причина, достаточно сложный каталог и переносить его через cml проблематично.
На первый взгляд на ReadyScript этот каталог можно реализовать.

До этого была проба организовать на ShopScript, но посмотрев на их "внутреннюю кухню" решил идти дальше.

Проектировал на RAML + JSON Schema, дополнительно описывал объект типами, но потому что отсутствовала вменяемая документация на систему, решается ссылкой на документацию в описании к объекту.
Пример https://yadi.sk/d/y4IzMo4OvLTCW, распаковать и запустить index.html , сама схема /raml/api.raml.

Реализовывал на silex
https://yadi.sk/d/FojkliI0vLTYH, это "приложение" для ShopScript,
маршрутизация в lib\actions\restapiFrontend.controller.php
реализация в lib\classes\

верификация производится по тем схемам, которые в документации
сериализация (нормализация) через массив, т.к. "нормальных" объектов в SS7 нет.
все ошибочные возвраты через "restapiException"

Вопросы по реализации в ReadyScript на наличие внутреннего инструментария (можно ссылки на документацию)
Каким образом можно прописать маршрутизацию?
Каким образом обработать Request и сформировать Response?
Каким образом сделать аунтификацию?
Каким образом верифицировать входящие данные?
Каким образом сериализовать объект с фильтрами?

Повысить оценку Понизить оценку

2

Re: REST API для ReadyScript

Приоткрою тайну, мы сейчас активно работаем в направлении мобильных приложений для нашей платформы и соответственно активно разрабатываем механизм обмена данными с движком посредством внешних API.

Чуть позже мы включим в наш дистрибутив модуль для нашего фреймворка, позволяющий элементарнейшим образом добавлять любые внешние методы API. Определенная часть методов API (которые будут нужны нашим приложениям) будут уже написаны и смогут служить примером для написания других методов.

Скажу сказу, мы проанализировали классический REST подход, отлично описанный на сайте jsonapi.org. И посмотрели в сторону API Вконтакте, которое на несколько порядков удобнее в дальнейшем расширении и разработке. Пару недель потратили на анализ и прагматичное сравнение двух архитектурных стилей. В результате мы выбрали архитектурный стиль ВК API. Название этого архитектурного стиля мы так и не смогли выявить, видимо потому что его нет, но оно чудовищно удобное. https://toster.ru/q/350268

Из плюшек будущего API:

1. Оно будет самодокументируемо за счет PHP Reflection, т.е. вы просто пишете класс, создаете методы, согласно интерфейсу, объявляете параметры вашего метода API в виде аргументов специальной функции, прописываете комментарии PHPDoc, на выходе получаете полностью готовую автоматическую документацию по всем вашим API.
2. Будет определенный набор базовых абстрактных классов, для стандартных CRUD операций.
3. Авторзация уже будет в комплекте, пока будет метод oauth/token из официальной спецификации oAuth.

4. Верификация параметров будет многоуровневая. Сперва фреймворк будет автоматически сверять наличие обязательных параметров на основе обязательных аргументов специальной функции контроллера. (с помощью Reflection), далее каждый метод может делать дополнительную верификацию и бросать исключение в случае ошибки.

Модуль еще находится в активной разработке, рекомендуем подождать его выхода. (Срок пока сложно назвать)

В текущий момент, вам возможно будет проще разработать более простой консольный импорт/экспорт файлов вашего формата, т.е. не полноценный внешний API, а просто механизм импорта/экспорта файлов вашего кастомного формата, это на порядок быстрее и вероятно закроет вашу задачу?

Повысить оценку Понизить оценку

Re: REST API для ReadyScript

Понятно, это замечательно.

Если будет возможность получить "ранний доступ", то могу написать обмен со стороны 1С УТ 11 (сделать выжимку лучшего из cml1c и битриксовского решения).

Сам смотрел
https://events.yandex.ru/lib/talks/2927/
Пример:
https://tech.yandex.ru/disk/poligon/#!/ … /resources
Из этого вынес удобство PUT и DELETE по части определения идемпотентности.

Пример VK: https://vk.com/dev/audio.save - заменит или создаст новую запись со ссылкой на файл?
По товарам https://vk.com/dev/market.add - 1 запрос на один товар, нет примера JSON тела, JSON схемы (думаю для разработчика клиента придется писать вручную)

В ReadyScript планируете добавлять/обновлять товар списком?

Недавно делали загрузку остатков и цен в Simpla, схема ценам (цена одна в симпле)
http://c2n.me/3CmdTPt
С точки зрения 1С-ника очень удобно.

В текущих обменах с сайтом по CML не всегда получаешь ответ о том что позиция записана на сайте, поэтому таблица регистрации изменений работает не полностью (отправил файл успешно - считаешь что позиции обновились).
Если будут ответы при загрузке списком, то обмен будет более четким.

Повысить оценку Понизить оценку

Re: REST API для ReadyScript

"В текущий момент, вам возможно будет проще разработать более простой консольный импорт/экспорт файлов вашего формата"

Цель в том чтобы вложить силы в формирование базы товаров со стороны 1С, после на основе API грузить с корректировками на сайт.

Пример: профили, которые включают плинтусы, порожки и.т.д.,
в группе более 10 "характеристик",
по части из которых фильтрация в списке,
по части формирование наименований "комплектаций" и отбор в карточке товара.
часть с множественным выбором (профиль может крепиться и на потолок и на стену)

+ задумка в том что "комплектация" она же SCU представлена в 1С как элемент справочника "Номенклатура" без характеристик, т.к. по части профилей есть и вариации по ширине в рамках одной модели.

Решаю за счет группировочного поля. (+ получаю бонус отсутствия перекоса себестоимости в бух учете)

+ нужно скомпоновать изображения (часть индивидуальные, часть общие для модели)

Делать файл выгрузки и после писать обработчик загрузки на сайт замучаюсь, проще API сделать.

Повысить оценку Понизить оценку

5

Re: REST API для ReadyScript

Разработка API, а тем более REST API - это большая задача, особенно если нет под рукой набора базовых классов для API. (собственно мы этим сейчас занимаемся). Все же вас хочу предостеречь и предложить дождаться выхода нашего модуля для удобной разработки внешнего API.

Если желаете, мы можем вам дать альфа версию модуля, когда она будет у нас более менее стабилизирована, чтобы вы могли начать разработку API под ваши нужды. (напишите в поддержку запрос)

Если вам все же необходимо начать разработку прямо сейчас на имеющихся возможностях фреймворка,
то просто можете создать свой модуль. Рекомендую нашу статью в помощь https://readyscript.ru/text-blog/razrab … nyy-modul/

Повысить оценку Понизить оценку

Re: REST API для ReadyScript

Для размышления:
API это средство доступа к объектам внутри системы, отражающее "доверие" разработчика системы к сторонним разработчикам.

Для себя сделал обертку для Битрикса, которая может обращаться к основным классам, понятно что могу "чего нибудь сломать" при работе с этим API но зато "мощности" хватает под мои задачи, шлю все POST пакетом команд.

Пример:

{
  "commandList":[
    {
      "number": 1,
      "module": "catalog",
      "class": "CCatalogStoreProduct",
      "method": "GetList",
      "parametres":  {
        "arOrder": null,
        "arFilter": null,
        "arGroupBy": null,
        "arNavStartParams": null,
        "arSelectFields": []
      }
  
    },
    {
      "number": 2,
      "module": "sale"
    },
    {
      "number": 3,
      "module": "shop"
    }
  ]
}

Повысить оценку Понизить оценку