Предварительные требования
- API-ключ с соответствующими разрешениями
- роль Admin в консоли
Минимальные разрешенияЧтобы отправлять запросы к конечной точке API, API-ключу нужна роль организации
Member с доступом к сервису Query Endpoints. Роль базы данных настраивается при создании конечной точки.1
Создание сохраненного запроса
Если у вас уже есть сохраненный запрос, этот шаг можно пропустить.Откройте новую вкладку запроса. Для примера мы будем использовать датасет YouTube, который содержит примерно 4,5 миллиарда записей. Следуйте инструкциям в разделе “Create table”, чтобы создать таблицу в вашем сервисе Cloud и вставить в нее данные.В качестве примера мы получим 10 лучших загрузчиков по среднему числу просмотров на видео с параметромyear, который задает пользователь.year), который выделен в примере выше.
Параметры запроса можно задавать в формате { } вместе с типом параметра.
Редактор запросов в консоли SQL автоматически распознает выражения параметров в запросах к ClickHouse и показывает отдельное поле ввода для каждого параметра.Давайте быстро выполним этот запрос, чтобы убедиться, что он работает: укажите год 2010 в поле переменных запроса справа в редакторе SQL:Затем сохраните запрос:Дополнительную информацию о сохраненных запросах можно найти в разделе “Saving a query”.2
Настройка конечной точки Query API
Конечные точки Query API можно настраивать прямо из представления запроса: нажмите кнопку Share и выберитеAPI Endpoint.
Затем вам будет предложено указать, какие ключ API смогут обращаться к этой конечной точке:После выбора ключа API вам будет предложено:- Выбрать роль базы данных, которая будет использоваться для выполнения запроса (
Full access,Read onlyилиCreate a custom role) - Указать разрешенные домены CORS
curl, чтобы вы могли отправить тестовый запрос:Для удобства ниже приведена команда curl, отображаемая в интерфейсе:3
Параметры Query API
Параметры в запросе можно задавать с помощью синтаксиса{parameter_name: type}. Эти параметры будут автоматически обнаружены, а пример тела запроса будет содержать объект queryVariables, через который их можно передавать.4
Тестирование и мониторинг
После создания конечной точки Query API вы можете проверить его работу с помощьюcurl или любого другого HTTP-клиента:После отправки первого запроса сразу справа от кнопки Share должна появиться новая кнопка. При нажатии на нее откроется выдвижная панель с данными мониторинга по запросу:Подробности реализации
HTTP-методы
Когда использовать GET:
- Простые запросы без сложных вложенных данных
- Параметры легко передаются в URL-кодировке
- Кэширование использует преимущества семантики HTTP GET
- Сложные переменные запроса (массивы, объекты, длинные строки)
- Когда тело запроса предпочтительнее с точки зрения безопасности и конфиденциальности
- Потоковая загрузка файлов или больших объёмов данных
Аутентификация
Настройка запроса
Параметры URL
Параметры запроса
Заголовки
Тело запроса
Параметры
Поддерживаемые форматы
Ответы
Успех
200 OK
Запрос успешно выполнен.
Коды ошибок
Рекомендации по обработке ошибок
- Убедитесь, что запрос содержит действительные учетные данные для аутентификации
- Проверьте
queryEndpointIdиqueryVariablesперед отправкой - Реализуйте корректную обработку ошибок с понятными сообщениями
Обновление версий конечных точек
- Добавьте заголовок
x-clickhouse-endpoint-upgradeсо значением1 - Добавьте заголовок
x-clickhouse-endpoint-versionсо значением2
- Поддержку всех форматов ClickHouse
- Возможность потоковой передачи ответов
- Более высокую производительность и расширенную функциональность
Примеры
Простой запрос
Версия 1
- cURL
- JavaScript
Версия 2
- GET (cURL)
- POST (cURL)
- JavaScript
Ответ
Запрос с переменными запроса и версией 2 в формате JSONCompactEachRow
- GET (cURL)
- POST (cURL)
- JavaScript
Ответ
Запрос с массивом в параметрах запроса для вставки данных в таблицу
- cURL
- JavaScript
Запрос с настройкой ClickHouse max_threads, равной 8
- GET (cURL)
- POST (cURL)
- JavaScript
Запрос и разбор потокового ответа
- TypeScript
Вывод
Вставка потока из файла в таблицу
./samples/my_first_table_2024-07-11.csv со следующим содержимым: