/datamarts[/{datamart}]/query

Содержание раздела
  1. URL
  2. Заголовки запроса
  3. Тело запроса
  4. Примеры запросов
    1. Запросы без параметров
      1. Тело запроса
      2. CURL-запрос без авторизационного токена
      3. CURL-запрос с авторизационным токеном
    2. Запросы с параметрами
      1. Тело запроса
      2. CURL-запрос без авторизационного токена
      3. CURL-запрос с авторизационным токеном

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 (опциональный) — список параметров подготовленного запроса;

Примеры запросов

Запросы без параметров

Ниже показаны примеры запросов без параметров: без авторизационного токена (если аутентификация отключена) и с авторизационным токеном (если аутентификация включена).

Тело запроса

{
  "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"
    }
  ]
}'