HTTP-команды
Все продукты SaveToDB поддерживают URL в меню действий и контекстном меню.
Все версии надстройки SaveToDB поддерживают получение веб-данных в таблицы Excel.
SaveToDB 10 поддерживает веб-запросы и сложные HTTP-команды во всех таблицах конфигурации.
Вы можете получать данные запросами POST, сохранять изменения, получать списки значений и т.д.
- Параметры URL
- Параметры парсера
- HTTP-заголовки
- Методы HTTP
- Тело сообщения
- SELECT из HTTP-запросов
- Формальная грамматика HTTP-команд
Параметры 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 | Значение |
---|---|---|
AddRowNum | Boolean | Добавить колонку _RowNum. |
ApiResult | Boolean | Использовать специальный парсер для результатов JSON REST API. |
AsIs | Boolean | Выводить данные в JSON из Yahoo Finance и MSN Money без специальных преобразований. |
CapitalLetter | Boolean | Преобразовывать первый символ наименования в верхний регистр (только JSON). |
CollapsedNodes | String | Включать заданные узлы XML в колонки родителя. |
FirstRow | Integer | Установить первую строку исходных данных для вывода. |
FirstRowHasNames | Boolean | Указать, что исходные данные содержат заголовки или нет. |
IgnoredTags | String | Не создавать колонки для заданных узлов XML. |
InputSeparator | String | Установить разделитель данных для CSV. |
KeptNodes | String | Добавлять заданные узлы XML или JSON в вывод, даже если они не содержат данных. |
Pages | Integer | Загрузить заданное количество страниц. |
RootPath | String | Установить родительские узлы XML или свойства JSON, или номера таблиц HTML для извлечения данных. |
SkippedNodes | String | Исключить узлы 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:
- [RFC7230] Fielding, R., Ed. And J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, June 2014. https://datatracker.ietf.org/doc/html/rfc7230.
- [RFC7231] Fielding, R., Ed. And J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content", RFC 7231, June 2014. https://datatracker.ietf.org/doc/html/rfc7231.
- [RFC7232] Fielding, R., Ed. And J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests", RFC 7232, June 2014. https://datatracker.ietf.org/doc/html/rfc7232.