SQL запросы (версия 3.xx)/HTTP: различия между версиями
Jugin (обсуждение | вклад) |
Jugin (обсуждение | вклад) |
||
Строка 54: | Строка 54: | ||
Для получения данных можно использовать код на языке JavaScript. Он должен располагаться в тегах /! !/, например: | Для получения данных можно использовать код на языке JavaScript. Он должен располагаться в тегах /! !/, например: | ||
<syntaxhighlight lang="javascript"> | |||
/! | /! | ||
function () { | function () { | ||
Строка 60: | Строка 61: | ||
} | } | ||
!/ | !/ | ||
</syntaxhighlight> | |||
С условием where: | С условием where: | ||
<syntaxhighlight lang="javascript"> | |||
/! | /! | ||
function () { | function () { | ||
Строка 76: | Строка 79: | ||
} | } | ||
!/ | !/ | ||
</syntaxhighlight> |
Версия 10:45, 11 февраля 2025
Источник данных HTTP предназначен для работы с данными при помощи стандартных http-запросов.
Поддерживаются SQL - операторы:
- select - выборка данных. В списке полей можно указать только * - все поля или имена полей, функции и различные преобразования не поддерживаются.
- where - позволяет указать условие выборки. Условие будет наложено на полученные данные.
Получение данных
Для получения данных методом GET можно использовать SQL-запрос:
select * from http_get ('https://www.calloffice.ru')
В этом случае, будет выполнен GET-запрос к указанному ресурсу и если в ответе будут данные json (Content-Type: application/json) или xml (Content-Type: text/xml или application/xml), результат будет преобразован в таблицу. Данные в формате json должны быть в виде:
[{"имя1":"Значение1","имя2":"Значение2"}, {"имя1":"Значение3","имя2":"Значение4"}, ...]
Если данные ответа не содержат данных json или xml запрос вернет одну строку с тремя полями:
- Status - код статуса ответа;
- Content_Type - тип содержимого (Content-Type);
- Content - текст ответа;
- Headers - заголовки ответа.
Допустимые функции
В выражении from можно использовать функции:
- http (Method, URL, Data, Headers) - http запрос на ресурс URL с методом Method, данными Data и заголовками Headers;
- http_get (Method, URL, Content_Type) - GET- запрос на ресурс URL, с типом содержимого Content_Type;
- http_post (URL, Data, Headers) - POST запрос на ресурс URL с данными Data и заголовками Headers;
- http_put (URL, Data, Headers) - PUT запрос на ресурс URL с данными Data и заголовками Headers;
- http_patch (URL, Data, Headers) - PATCH запрос на ресурс URL с данными Data и заголовками Headers;
- http_delete (URL, Data, Headers) - DELETE запрос на ресурс URL с данными Data и заголовками Headers;
Условия отбора where
Условие отбора записей накладывается на полученные данные и может быть двух вариантах:
- В виде обычных выражений SQL, поддерживаются только простые условия без скобок.
- В виде функции JavaScript, например:
select ip, connectionid, port from http_get ('https://www.calloffice.ru/test/http.php?s1s') where function () { return (port == 55893 && isssl); }
Если не указан список аргументов, он будет сформирован автоматически на основе списка полей, полученных в результате запроса. Список полей можно так же указать в явном виде:
select ip, connectionid, port from http_get ('https://www.calloffice.ru/test/http.php?s1s') where function (port, isssl) { return (port == 55893 && isssl); }
Пользовательский код работы с данными
Для получения данных можно использовать код на языке JavaScript. Он должен располагаться в тегах /! !/, например:
/!
function () {
var Result = this.Request ('GET', 'https://www.calloffice.ru/test/http.php?ssss1s');
return this.MakeRecordset (Result);
}
!/
С условием where:
/!
function () {
var Result = this.Request ('GET', 'https://www.calloffice.ru/test/http.php?ssss1s');
var Recordset = this.MakeRecordset (Result);
Recordset = Recordset.Where (function (port, ip, isssl) {
return (port != 55893 && isssl);
});
return Recordset;
}
!/