HTTP-команды

HTTP-команды

Все продукты SaveToDB поддерживают URL в меню действий и контекстном меню.

Все версии надстройки SaveToDB поддерживают получение веб-данных в таблицы Excel.

SaveToDB 10 поддерживает веб-запросы и сложные HTTP-команды во всех таблицах конфигурации.
Вы можете получать данные запросами POST, сохранять изменения, получать списки значений и т.д.

Параметры URL

Этот раздел демонстрирует использование параметров в URL.

К примеру, URL содержит тикер в сегменте:

https://some-service/APPL

Вы можете задать параметр и значение по умолчанию в фигурных скобках:

https://some-service/{Symbol=APPL}

URL ниже использует стандартный параметр "s":

https://some-service?s=APPL

Надстройка SaveToDB помещает такие параметры на ленту.

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

https://some-service?s={Symbol=APPL}

Если требуется отключить изменение параметров на ленте, добавьте {} в конце URL.

https://some-service?s=APPL{}

Параметры парсера

Надстройка SaveToDB автоматически извлекает данные из JSON, XML, HTML, CSV и плоского текста.

Вы можете настроить извлечение данных используя специальные параметры парсера.

Добавляйте параметры парсера после URL, разделенные точкой с запятой. Разделяйте значения параметра запятыми.

Например:

https://query1.finance.yahoo.com/v7/finance/options/{Symbol=AAPL};pages=50;rootpath=*.*.*.calls,*.*.*.puts

https://www.zohoapis.com/crm/v2/settings/fields?module={module=Accounts};RootPath=fields;ApiResult=true

Поддерживаемые параметры парсера

ПараметрTypeЗначение
AddRowNumBooleanДобавить колонку _RowNum.
ApiResultBooleanИспользовать специальный парсер для результатов JSON REST API.
AsIsBooleanВыводить данные в JSON из Yahoo Finance и MSN Money без специальных преобразований.
CapitalLetterBooleanПреобразовывать первый символ наименования в верхний регистр (только JSON).
CollapsedNodesStringВключать заданные узлы XML в колонки родителя.
FirstRowIntegerУстановить первую строку исходных данных для вывода.
FirstRowHasNamesBooleanУказать, что исходные данные содержат заголовки или нет.
IgnoredTagsStringНе создавать колонки для заданных узлов XML.
InputSeparatorStringУстановить разделитель данных для CSV.
KeptNodesStringДобавлять заданные узлы XML или JSON в вывод, даже если они не содержат данных.
PagesIntegerЗагрузить заданное количество страниц.
RootPathStringУстановить родительские узлы XML или свойства JSON, или номера таблиц HTML для извлечения данных.
SkippedNodesStringИсключить узлы XML или свойства JSON с заданными путями из вывода.

HTTP-заголовки

SaveToDB 10 позволяет включить заголовки HTTP в текст запроса.

Добавляйте заголовки HTTP после строки URL, разделяя одиночными переводами строк CR, LF или CRLF. Разделяйте заголовок и значение двоеточием.

Например:

https://some-service/{Symbol}
Accept: application/json
Referrer: https://some-service/page

В заголовках также можно использовать параметры в фигурных скобках. Например, чтобы настроить заголовок referrer.

Методы HTTP

SaveToDB 10 поддерживает следующие методы HTTP: GET, POST, PUT, PATCH, MERGE, DELETE.

Методы используются в командах REST API для сохранения данных.

Добавляйте метод и пробел перед URL.

Тело сообщения

SaveToDB 10 поддерживает форматы сообщений application/json и application/x-www-form-urlencoded.

Надстройка определяет формат автоматически на основе тела сообщения.

Тело может содержать параметры. Параметры должны иметь префикс @.

Вы можете задать все необходимые параметры вручную.

Также, вы можете использовать встроенные параметры @json_row_values и @form_row_values, которые включают все значения строки.

Отделяйте тело от URL и заголовков двумя переводами строки.

Ниже приведен пример команды POST для добавления контакта:

POST https://www.zohoapis.com/crm/v2/Contacts

{"data":[{@json_row_values}]}

См. подробности в статье Сохранение данных по REST API.

SELECT из HTTP-запросов

SaveToDB 10 поддерживает команду SELECT для HTTP-запросов.

Например, можно использовать следующую команду для добавления тикера в выходную таблицу данных:

SELECT @Symbol, * FROM https://some-service/{Symbol=APPL}

Мы рекомендуем использовать полную форму этой команды, включая задание псевдонима колонки и квадратных скобок вокруг URL или команды HTTP.

Для приведенного выше примера, лучше использовать следующую команду:

SELECT @Symbol AS Symbol, * FROM [https://some-service/{Symbol=APPL}]

Вы можете задать требуемые колонки для вывода и их псевдонимы. Например:

SELECT @Symbol AS Symbol, d AS Date, l AS Last FROM [https://some-service/{Symbol=APPL}]

Более того, вы можете использовать многострочные команды, включая условия WHERE и ORDER BY.

SELECT
    @Symbol AS Symbol
    , d AS Date
    , l AS Last
FROM
    [https://some-service/{Symbol=APPL}]
ORDER BY
    Date

Ниже приведен пример более сложной команды:

SELECT
    @Symbol AS Symbol
    , d AS Date
    , l AS Last
FROM
    [POST https://some-service/;ApiResult=true HTTP/1.1
Accept: application/json
Referrer: https://some-service/page

{"symbol":@symbol}
]
ORDER BY
    Date

Формальная грамматика HTTP-команд

HTTP-command = HTTP-message | select

HTTP-message = [ method SP ] request-target [ SP HTTP-version] *( NEWLINE header-name ":" header-value ) [ 2*NEWLINE message-body ]

method = "GET" | "POST" | "PUT" | "PATCH" | "MERGE" | "DELETE"

request-target = absolute-URI *( ";" parser-parameter-name "=" parser-parameter-value )

HTTP-version = "HTTP/1.1"

select = "SELECT" SP select-fields SP "FROM" SP select-source [SP "WHERE" conditions ] [ SP "ORDER BY" orderBy ]

select-source = "[" HTTP-message "]" / DQUOTE HTTP-message DQUOTE

NEWLINE = CR | LF | CRLF

Эта грамматика является расширением грамматики стандартов RFC: