Каталог решений - HTTP Сервисы: Путь к своему сервису. Часть 4

HTTP Сервисы: Путь к своему сервису. Часть 4

HTTP Сервисы: Путь к своему сервису. Часть 4

В наличии

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 3». В предыдущих частях мы уже о многом поговорили. В этой части поговорим про размер сообщений, о файлах, о порциях и немножко, о регламентах.

Категория:

Описание

  • В первой части мы создали каркас для Get метода в расширении конфигурации. 
  • Во второй части мы поработали с OData и создали обработку, получающую через HTTP-Сервис используя метод Get данные сформированные при помощи СКД.
  • В третьей части мы поработали со всеми методами. Сделали пример формирующий данные при помощи СКД, работающий как через Get, так и через Post. Также поработали с длительными операциями.

В этой части поговорим о такой важной вещи как порционная передача данных. Работать будем в основном с методами GET и POST, немножко затронем OData.

HTTP-сервис будет в расширении конфигурации БСП 3.0.1.231 на платформе 8.3.12.1595.

Начнем.

Немножко про OData и порции.

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

Для того чтобы такого не происходило нужно делать следующие вещи:

  1. Делайте выборку только по тем реквизитам, которые вам нужны. Для этого используйте $select.
  2. Перед тем как делать запрос уточните количество записей. Для этого используйте $count.
  • count — Позволяет получить в качестве результата запроса размер выборки. При успешном выполнении, тело ответа должно содержать только число элементов коллекции, отформатированное как обычное число.
  1. Если записей много забирайте их порциями через $top и $skip.
  • top — Ограничивает количество записей, возвращаемых при обращении к ресурсу.
  • skip — Позволяет исключить из результата запроса первые несколько записей. Если параметры $top и $skip указываются одновременно, то параметр $skip будет применен раньше, чем параметр $top. Приоритет применения параметров не зависит от порядка их указания в теле запроса.
  1. Я бы еще рекомендовал использовать JSON, так как меньше весит, но тут на вкус и цвет…

Предлагаю сделать небольшую обработку, которая будет забирать порциями данные из справочника КлассификаторБанков, он самый большой в БСП. Порция по умолчанию будет равна 1000 элементов.

Воспользуемся обработкой Доступный состав стандартного интерфейса OData и дадим доступ к нужному нам справочнику.

Узнаем сколько в справочнике элементов. Наш запрос будет таким: http://127.0.0.1/DemoSSL3_0_1_231/odata/standard.odata/Catalog_КлассификаторБанков/$count?$select=Ref_Key,Description,Code,DeletionMark,IsFolder&$format=json;odata=nometadata

4774 элемента. Далее набросаем обработку.

Создаем реквизиты:

  • КоличествоСтраниц – Число. Получаем путем округления в большую сторону количество элементов\Порцию
  • КоличествоЭлементов – Число. Количество элементов полученных по OData.
  • ОбъектКонфигурации – Строка. Представление элемента в OData.
  • Порция – Число. Количество элементов на странице.
  • Результат – Строка.
  • ТекущаяСтраница – Число.
  • Селект — Строка. Кусок запроса с параметрами выборки. В нашем примере "$select=Ref_Key,Description,Code,DeletionMark,IsFolder&"

Создаем Команды:

  • НачальнаяЗагрузка – Загружаем количество элементов и рассчитываем количество страниц.
  • Вперед – Загружаем следующую порцию.
  • Назад – загружаем предыдущую порцию.

 

has been added to your cart:
Оформление заказа