/datamarts[/{datamart}]/query
Содержание раздела
POST-метод выполняет запрос SQL+, заданный в теле сообщения. Поддерживается как выполнение простого вопроса, так и подготовленного запроса (prepared statement).
Запрос можно выполнить в выбранной логической базе данных. Чтобы выбрать логическую БД, укажите параметр {datamart}
в URL метода.
URL
{baseUrl}/api/v1/datamarts[/{datamart}]/query[?format={format}]
Параметры:
baseUrl
— путь для подключения к серверу ноды Prostore (IP-адрес или доменное имя и номер порта);datamart
(опциональный) — имя логической базы данных, используемой по умолчанию;format
(опциональный) — формат ответа. Возможные значения:json
— JSON-строка (по умолчанию),plain
— текстовое представление.
Заголовки запроса
Поддерживаются следующие типы заголовков:
x-request-id
(опциональный) — задает уникальный идентификатор HTTP-запроса. Если не указан, система генерирует UUID-значение и возвращает его в качестве идентификатора в ответе;Authorization
(опциональный) — задает тип аутентификации и авторизационный токен (JWT). Возможное значение типа аутентификации —Bearer
.
Подробнее об аутентификации запросов см. в разделе Аутентификация.
Тело запроса
Тело запроса может содержать следующие параметры:
query
— любой поддерживаемый запрос SQL+. В простом запросе указывайте значения как есть, в подготовленном — замените каждое значение на символ?
;queryId
(опциональный) — идентификатор запроса SQL+. По этому идентификатору можно отследить обработку запроса в логах;params
(опциональный) — список параметров подготовленного запроса;value
— значение параметра;type
— тип параметра (см. возможные значения в разделе Логические типы данных).
Примеры запросов
Запросы без параметров
Ниже показаны примеры запросов без параметров: без авторизационного токена (если аутентификация отключена) и с авторизационным токеном (если аутентификация включена).
Тело запроса
{
"query": "SELECT st.id, st.category, s.product_code FROM marketing.stores AS st INNER JOIN marketing_new.sales AS s ON st.id = s.store_id DATASOURCE_TYPE = 'adb'",
"queryId": "12345"
}
CURL-запрос без авторизационного токена
curl -X 'POST' \
'http://localhost:9090/api/v1/datamarts/query?format=json' \
-H 'x-request-id: ee7c7570-1eec-11ed-861d-0242ac120002' \
-H 'Content-Type: application/json' \
-d '{
"query": "SELECT st.id, st.category, s.product_code FROM marketing.stores AS st INNER JOIN marketing_new.sales AS s ON st.id = s.store_id DATASOURCE_TYPE = '\''adb'\''",
"queryId": "12345"
}'
CURL-запрос с авторизационным токеном
curl -X 'POST' \
'http://localhost:9090/api/v1/datamarts/query?format=json' \
-H 'x-request-id: ee7c7570-1eec-11ed-861d-0242ac120002' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
-d '{
"query": "SELECT st.id, st.category, s.product_code FROM marketing.stores AS st INNER JOIN marketing_new.sales AS s ON st.id = s.store_id DATASOURCE_TYPE = '\''adb'\''",
"queryId": "12345"
}'
Запросы с параметрами
Ниже показаны примеры запросов с параметрами (подготовленных запросов или prepared statement): без авторизационного токена и с авторизационным токеном.
Тело запроса
{
"query": "INSERT INTO sales (id, transaction_date, product_code, product_units, store_id) values (?, ?, ?, ?, ?), (?, ?, ?, ?, ?)",
"queryId": "98765",
"params": [
{
"value": 300014,
"type": "INT"
},
{
"value": "2022-08-23 09:34:10",
"type": "TIMESTAMP"
},
{
"value": "ABC0003",
"type": "VARCHAR(256)"
},
{
"value": 3,
"type": "INT"
},
{
"value": 123,
"type": "INT"
},
{
"value": 300015,
"type": "INT"
},
{
"value": "2022-08-23 20:05:56",
"type": "TIMESTAMP"
},
{
"value": "ABC0001",
"type": "VARCHAR(256)"
},
{
"value": 6,
"type": "INT"
},
{
"value": 234,
"type": "INT"
}
]
}
CURL-запрос без авторизационного токена
curl -X 'POST' \
'http://localhost:9090/api/v1/datamarts/marketing/query?format=json' \
-H 'x-request-id: ee7c7570-1eec-11ed-861d-0242ac120002' \
-H 'Content-Type: application/json' \
-d '{
"query": "INSERT INTO sales (id, transaction_date, product_code, product_units, store_id) values (?, ?, ?, ?, ?), (?, ?, ?, ?, ?)",
"queryId": "98765",
"params": [
{
"value": 300014,
"type": "INT"
},
{
"value": "2022-08-23 09:34:10",
"type": "TIMESTAMP"
},
{
"value": "ABC0003",
"type": "VARCHAR(256)"
},
{
"value": 3,
"type": "INT"
},
{
"value": 123,
"type": "INT"
},
{
"value": 300015,
"type": "INT"
},
{
"value": "2022-08-23 20:05:56",
"type": "TIMESTAMP"
},
{
"value": "ABC0001",
"type": "VARCHAR(256)"
},
{
"value": 6,
"type": "INT"
},
{
"value": 234,
"type": "INT"
}
]
}'
CURL-запрос с авторизационным токеном
curl -X 'POST' \
'http://localhost:9090/api/v1/datamarts/marketing/query?format=json' \
-H 'x-request-id: ee7c7570-1eec-11ed-861d-0242ac120002' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
-d '{
"query": "INSERT INTO sales (id, transaction_date, product_code, product_units, store_id) values (?, ?, ?, ?, ?), (?, ?, ?, ?, ?)",
"queryId": "98765",
"params": [
{
"value": 300014,
"type": "INT"
},
{
"value": "2022-08-23 09:34:10",
"type": "TIMESTAMP"
},
{
"value": "ABC0003",
"type": "VARCHAR(256)"
},
{
"value": 3,
"type": "INT"
},
{
"value": 123,
"type": "INT"
},
{
"value": 300015,
"type": "INT"
},
{
"value": "2022-08-23 20:05:56",
"type": "TIMESTAMP"
},
{
"value": "ABC0001",
"type": "VARCHAR(256)"
},
{
"value": 6,
"type": "INT"
},
{
"value": 234,
"type": "INT"
}
]
}'