Prérequis
- une clé API avec les autorisations appropriées
- un rôle Admin dans la Console
Autorisations minimalesPour interroger un endpoint d’API, la clé API doit disposer du rôle d’organisation
Member avec l’accès au service Query Endpoints. Le rôle de base de données est configuré lors de la création de l’endpoint.1
Créer une requête enregistrée
Si vous avez déjà une requête enregistrée, vous pouvez ignorer cette étape.Ouvrez un nouvel onglet de requête. À des fins de démonstration, nous utiliserons le jeu de données YouTube, qui contient environ 4,5 milliards d’enregistrements. Suivez les étapes de la section “Create table” pour créer la table sur votre service Cloud et y insérer des données.À titre d’exemple, nous allons renvoyer les 10 comptes ayant publié des vidéos avec la moyenne de vues par vidéo la plus élevée pour un paramètreyear saisi par l’utilisateur.year), mis en évidence dans l’extrait ci-dessus.
Vous pouvez spécifier des paramètres de requête à l’aide de { } avec le type du paramètre.
L’éditeur de requêtes de la console SQL détecte automatiquement les expressions de paramètres de requête ClickHouse et fournit un champ de saisie pour chaque paramètre.Exécutons rapidement cette requête pour vérifier qu’elle fonctionne en spécifiant l’année 2010 dans la zone de saisie des variables de requête située à droite de l’éditeur SQL :Ensuite, enregistrez la requête :Vous trouverez plus d’informations sur les requêtes enregistrées dans la section “Saving a query”.2
Configuration de l’endpoint d’API de requête
Les endpoints d’API de requête peuvent être configurés directement depuis la vue de requête en cliquant sur le bouton Share, puis en sélectionnantAPI Endpoint.
Il vous sera demandé de préciser quelles clés API doivent pouvoir accéder à l’endpoint :Après avoir sélectionné une clé API, il vous sera demandé de :- Sélectionner le rôle de base de données qui sera utilisé pour exécuter la requête (
Full access,Read onlyouCreate a custom role) - Spécifier les domaines autorisés pour le partage de ressources entre origines (CORS)
curl s’affichera afin que vous puissiez envoyer une requête de test :La commande curl affichée dans l’interface est reproduite ci-dessous pour plus de commodité :3
Paramètres de l’API de requête
Les paramètres d’une requête peuvent être spécifiés avec la syntaxe{parameter_name: type}. Ces paramètres seront automatiquement détectés et l’exemple de payload de requête contiendra un objet queryVariables vous permettant de transmettre ces paramètres.4
Test et monitoring
Une fois un endpoint d’API de requête créé, vous pouvez vérifier son fonctionnement à l’aide decurl ou de tout autre client HTTP :Après l’envoi de votre première requête, un nouveau bouton devrait apparaître immédiatement à droite du bouton Share. En cliquant dessus, vous ouvrirez un panneau latéral contenant des données de monitoring sur la requête :Détails d’implémentation
Méthodes HTTP
Quand utiliser GET :
- Requêtes simples sans données imbriquées complexes
- Les paramètres peuvent être facilement encodés dans l’URL
- La mise en cache tire parti de la sémantique HTTP de GET
- Variables de requête complexes (tableaux, objets, chaînes longues)
- Lorsque le corps de la requête est préférable pour des raisons de sécurité ou de confidentialité
- Téléversement de fichiers en continu ou données volumineuses
Authentification
Configuration de la requête
Paramètres d’URL
Paramètres de requête
En-têtes
Corps de la requête
Paramètres
Formats pris en charge
Réponses
Succès
200 OK
La requête a bien été exécutée.
Codes d’erreur
Bonnes pratiques de gestion des erreurs
- Assurez-vous que des identifiants d’authentification valides sont inclus dans la requête
- Validez
queryEndpointIdetqueryVariablesavant l’envoi - Mettez en place une gestion appropriée des erreurs avec des messages d’erreur adaptés
Mise à niveau des versions d’endpoint
- Incluez l’en-tête
x-clickhouse-endpoint-upgradedéfini sur1 - Incluez l’en-tête
x-clickhouse-endpoint-versiondéfini sur2
- La prise en charge de tous les formats ClickHouse
- Le streaming des réponses
- Des performances et fonctionnalités améliorées
Exemples
Requête de base
Version 1
- cURL
- JavaScript
Version 2
- GET (cURL)
- POST (cURL)
- JavaScript
Réponse
Requête avec des paramètres de requête et la version 2 au format JSONCompactEachRow
- GET (cURL)
- POST (cURL)
- JavaScript
Réponse
Requête avec un Array dans les variables de requête qui insère des données dans une table
- cURL
- JavaScript
Requête avec le paramètre ClickHouse max_threads défini sur 8
- GET (cURL)
- POST (cURL)
- JavaScript
Interroger et analyser la réponse sous forme de flux
- TypeScript
Sortie
Insérer un flux de données provenant d’un fichier dans une table
./samples/my_first_table_2024-07-11.csv avec le contenu suivant :