Voir les catégories

API REST Postgres de PlanetScale : Transformez une requête SQL en point de terminaison

API REST · PlanetScale vers un point de terminaison

Tournez un Échelle planétaire Requête SQL dans un API REST point de terminaison

Enregistrez une requête dans le générateur de requêtes, cliquez Nouveau point de terminaisonVous disposez d'une URL à l'adresse api.querystreams.com avec sa propre clé. La requête SQL s'exécute en lecture seule sur l'agent déjà installé avec votre base de données PlanetScale ; l'appelant reçoit un fichier JSON ou CSV et n'a jamais accès à la requête, au schéma ni au mot de passe. Aucun hébergement ni port à ouvrir. Comptez environ 90 secondes à partir d'une requête enregistrée, et le forfait gratuit couvre votre premier point de terminaison.

Environ 90 secondes après une requête enregistrée Aucun serveur à héberger Vos identifiants vous suivent. Une seule clé par appelant, révocation possible à tout moment.
Vous êtes bloqué à un moment donné ? N'hésitez pas à nous demander. Ouvrir Soutien Dans la section « Flux de requêtes » (menu en haut à droite → Assistance), envoyez-nous un message. De vraies personnes le liront, et « Je ne comprends pas ce que cet écran demande » est une question tout à fait légitime.

Ce que vous obtiendrez

Logo PlanetScale PostgresUne URL à api.querystreams.com qui renvoie les lignes de votre requête PlanetScale enregistrée au format JSON ou CSV à toute personne possédant une clé, testée depuis la console du portail avant d'être partagée. Par exemple :

POSTEapi.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19
CléValeurDescription
ville chaîne FacultatifSeattleFiltre appelable à partir de la requête enregistrée
Clé X-APIqsapi_AB••••••••••Votre jeton secret
{
  "ville": "Seattle"
}
En-têteValeurDescription
Clé X-APIqsapi_AB••••••••••Votre jeton secret. Un par appelant, révocable à tout moment.
Type de contenuapplication/jsonLes paramètres sont transmis sous forme de corps JSON
Accepterapplication/jsonRéponse au format JSON ; demandez un format texte/CSV et vous recevrez un fichier CSV.
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"city": "Seattle"}'
Statut 200 OKTemps 84 msTaille 412 BTronqué Non
{
  « colonnes »: [ { "nom": "customer_id", "taper": "entier" }, { "nom": "nom", "taper": "chaîne" }, { "nom": "ville", "taper": "chaîne" } ],
  "rangées": [
    { "customer_id": 1042, "nom": « Les Marchands du Vent du Nord », "ville": "Seattle" },
    { "customer_id": 1057, "nom": « Pourvoyeurs alpins », "ville": "Denver" },
    { "customer_id": 1063, "nom": "Harbour Foods", "ville": "Halifax" }
  ],
  "méta": { "row_count": 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}
En-têteValeurDescription
type de contenuapplication/json; charset=utf-8L'enveloppe sur l'onglet Corps
longueur du contenu412Octets renvoyés ; l’icône Taille ci-dessus
Lecture seule : une seule requête enregistrée, rien d’autre SQL ne quitte jamais votre compte Chaque appel sur l'onglet Activité

PlanetScale Postgres héberge vos données dans le cloud, gérées par son fournisseur. Si un tiers souhaite y accéder via son application, son tableau de bord ou son script, les solutions habituelles impliquent trop de ressources : un identifiant de base de données qui disparaît avec le projet, une exportation nocturne obsolète, ou un serveur API qu'il faut désormais gérer et maintenir. Query Streams transforme le point de terminaison en une requête enregistrée associée à une clé. L'agent déjà installé sur votre base de données PlanetScale Postgres exécute la requête, api.querystreams.com vérifie la clé et la limite de requêtes, et l'utilisateur reçoit les lignes. Le code SQL, le schéma et les identifiants restent toujours sur votre compte.

OÙ COURT L'AGENTtout ordinateur ou serveur toujours allumé avec une connexion internetVotre base de données PlanetScaleLes informations d'identification restent iciAgent de flux de requêtesexécute la requête enregistréeapi.querystreamsvérifie la cléHTTPS · lignes uniquement, jamais le SQLCelui qui détient la clévotre application, un tableau de bord, un partenaire, un scriptRequête GET ou POST avec clé X-APIRetour JSON, CSV ou NDJSON
L'agent interagit avec vos données et exécute la requête. api.querystreams.com vérifie la clé et la limite de débit, puis transmet les lignes. L'appelant n'accède jamais à votre réseau.

Ce dont vous aurez besoin

Un compte Query Streams

Chaque forfait inclut l'API REST. Le forfait gratuit vous offre un point de terminaison, deux clés et 250 lignes par requête, ce qui est suffisant pour créer ce guide. Inscrivez-vous sur mon.querystreams.com.

L'agent installé sur n'importe quel ordinateur toujours allumé, avec la connexion PlanetScale ajoutée.

Il suffit d'un accès internet.

Une requête enregistrée dans le générateur de requêtes

Le point de terminaison encapsule exactement une requête enregistrée. Rédigez la requête SELECT, exécutez-la une fois, puis enregistrez-la. Ajoutez un filtre dynamique (un @variable dans la clause WHERE) si les appelants doivent pouvoir filtrer.

Qui peut créer des points de terminaison ? Propriétaires, administrateurs et créateurs. Si le API L'élément est manquant dans votre barre supérieure ; un administrateur peut l'activer pour votre utilisateur dans les paramètres. Compte → AutorisationsToute personne avec laquelle vous partagez un point de terminaison a simplement besoin d'un compte Query Streams, quel que soit son forfait.

Configurez-le en quatre étapes

  1. Enregistrer la requête

    Dans Générateur de requêtes Choisissez votre connexion PlanetScale, rédigez la requête SELECT à publier et exécutez-la une fois pour visualiser les lignes. Limitez-vous aux colonnes nécessaires à l'appelant ; le point de terminaison renvoie exactement ce que la requête renvoie.

    Requête enregistrée · clients
    SELECTIONNER identifiant_client, nom, ville
    DE clients publics
    COMMANDE PAR nom
    LIMITE 100;

    Si les appelants doivent pouvoir filtrer, ajoutez un filtre dynamique, par exemple. OÙ ville = @ville. Chaque @variable devient un paramètre d'API à l'étape 3. Cliquez Économiser et donnez un nom à la requête ; ce nom devient le nom d'affichage du point de terminaison.

  2. Créer le point de terminaison

    Ouvrir API dans la barre supérieure et cliquez Nouveau point de terminaisonLe magicien comporte quatre étapes, Sélectionner une requête, Configurer, Paramètres de verrouillage et Partager. Sur Sélectionner une requête, cliquez sur la requête que vous venez d'enregistrer ; les requêtes dont l'agent est hors ligne sont grisées. Cliquez Suivant.

    Raccourci. Depuis le générateur de requêtes, vous pouvez exposer directement la requête ouverte ; l’assistant démarre alors à Configurer avec la requête déjà sélectionnée.

  3. Configurer et verrouiller les paramètres

    Sur Configurer Les valeurs par défaut conviennent pour un premier point de terminaison : Nom d'affichage rempli à partir de la requête, Durée de vie Permanent (choisir) Expiration (pour une action temporaire), Mode de réponse Statique (une réponse JSON ; choisir) Streaming (pour des résultats dépassant la limite de lignes statique de votre plan), Format intérieur JSON. Le mode et le format de réponse sont fixes une fois créés ; veuillez les définir ici. Cliquez Suivant.

    Sur Paramètres de verrouillage Chaque filtre dynamique de la requête est listé. Laissez ceux que les appelants peuvent définir comme Appelable et donner à chacun un Nom de la chaîne de requête; cocher Requis Si un appel sans cette valeur doit échouer, fixez une valeur que l'appelant ne doit pas modifier. Fermé, ou un scénario de date tel que Début du mois. Caché conserve la valeur par défaut de la requête et rejette toute tentative de modification. Cliquez Suivant.

  4. Partagez et obtenez votre clé

    Sur Partager vous pouvez inviter Personnes par e-mail ou ajoutez un Clé de service pour un serveur ou un outil d'automatisation, ou ignorez les deux pour le moment. Cliquez Créer et obtenir ma cléL'écran de confirmation affiche l'URL du point de terminaison et votre clé : une chaîne de 49 caractères commençant par « 49 ». qsapi_Copiez-le. Vous pourrez le révéler à nouveau ultérieurement à partir du point de terminaison. Partage L'onglet permet de ne pas le perdre si vous fermez l'écran.

    Cliquez sur Envoyer dans la console pour effectuer le premier appel depuis le portail lui-même. Le volet de réponse affiche Statut, Temps et Taille, le Corps L'onglet affiche le JSON et l'appel apparaît sur le Activité onglet quelques secondes plus tard.

C'est ça. Votre base de données PlanetScale Postgres répond désormais à une URL, en lecture seule, avec les clés que vous fournissez. Aucune installation n'a été effectuée, aucun port n'a été ouvert et la base de données SQL est restée sur votre compte.

Appelez-le de n'importe où

Remplacez l'identifiant du point de terminaison par le vôtre, provenant de la barre d'adresse de la console. qsapi_VOTRE_CLÉ avec votre clé. Les paramètres appelables sont placés dans la chaîne de requête lors d'une requête GET ; ici, la requête enregistrée expose ville:

Paramètres GET dans la chaîne de requête
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
Réponse · 200 OK · application/json
{
  « colonnes »: [ { "nom": "customer_id", "taper": "entier" }, { "nom": "nom", "taper": "chaîne" }, { "nom": "ville", "taper": "chaîne" } ],
  "rangées": [
    { "customer_id": 1042, "nom": « Les Marchands du Vent du Nord », "ville": "Seattle" },
    { "customer_id": 1057, "nom": « Pourvoyeurs alpins », "ville": "Denver" },
    { "customer_id": 1063, "nom": "Harbour Foods", "ville": "Halifax" }
  ],
  "méta": { "row_count": 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}

Les lignes sont renvoyées sous forme d'objets indexés par nom de colonne, avec la liste des colonnes et un méta Ce bloc indique le nombre de lignes, si le résultat a été tronqué et l'identifiant de la requête que vous pouvez citer pour obtenir de l'aide. Un appel POST place les paramètres dans un corps JSON, ce qui est idéal pour les longues listes de valeurs.

POST · paramètres dans un corps JSON
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"city": "Seattle"}}'
?format=csv
CSV au lieu de JSON, ligne d'en-tête incluse. Accepter : texte/csv Il en va de même. Les points de terminaison de flux renvoient du NDJSON (un objet JSON par ligne) avec un résultat final {"_summary": true, "row_count": N} ligne ; vérifiez cette dernière ligne.
?sample=true
Cinq rangées maximum, non facturées. Idéal pour le câblage d'un client.
?compression=lz4
Un châssis LZ4 pour les appelants à volume élevé avec décodeur ; Code L'onglet contient l'extrait de code du décodeur pour chaque langue. La compression gzip simple s'effectue automatiquement lorsque votre client envoie des données. Accept-Encoding: gzip.
Autorisation : Porteur qsapi_…
Accepté comme alias pour Clé X-APIUtilisez-le depuis le code du navigateur.

Là où il se branche

Excel et Power BI

Exporter → Power Query M (.pq) vous fournit une requête prête à l'emploi. Collez-la dans l'éditeur avancé (Excel : Données → Importer des données → À partir d'autres sources → Requête vide ; Power BI : Accueil → Transformer les données → Nouvelle source → Requête vide) et remplacez l'espace réservé par votre requête. qsapi_ clé.

Facteur, Insomnie, Marelle

Le même Exporter Le menu permet de télécharger une collection Postman v2.1, une exportation Insomnia v5 ou une collection Hoppscotch avec les paramètres renseignés et un espace réservé pour la clé.

Votre propre code

Le Code Cet onglet contient des exemples fonctionnels pour cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell et Ruby. Exporter → Spécification OpenAPI 3.1 Compatible avec tous les générateurs de clients ou interfaces utilisateur Swagger.

n8n, Zapier, Make, cron

Créer un Clé de service Pour l'outil, collez l'URL et la clé dans son nœud HTTP, puis planifiez son exécution. Chaque outil possède sa propre clé ; vous pouvez donc en révoquer un sans toucher aux autres.

Ce que les plans permettent

PlanPoints d'extrémitéClés par point de terminaisonPersonnes par point de terminaisonLignes par appel (statique)Lignes par appel (streaming)Appels par minute, par touche
Gratuit1212502503
Noyau personnel2325,000250,00015
Personnel Plus55510,000500,00030
Cœur de métier5101050,0001,000,000300
Business Plus102025100,0005,000,000600
Business Max253050250,00010,000,000600
Noyau d'entreprise5050100500,00025,000,0001,000
Entreprise Plus1001002501,000,00050,000,0001,000
Enterprise Max2502005002,500,000100,000,0001,500

Chaque requête est soumise à un délai d'attente fixe de 60 secondes et à une limite de réponse de 8 Mio. Les octets renvoyés sont décomptés de votre forfait de données mensuel, le même que celui utilisé par les modules complémentaires Excel et Google Sheets. La version gratuite inclut un point de terminaison et 5 Mo par mois, ce qui suffit amplement pour une petite table consultée plusieurs fois par jour. Consultez la page des prix pour les indemnités prévues par le régime.

La gratuité est un plan que vous conservez. Il ne s'agit pas d'une période d'essai limitée dans le temps. Consultez la description détaillée sur le site web. page de tarification.

Le garder en sécurité

Le SQL reste à vous.

Les appelants reçoivent des lignes. Ils ne voient jamais la requête, les noms des tables ni les détails de connexion, et ils ne peuvent pas modifier ce que le point de terminaison exécute.

Une seule clé, un seul point de terminaison, un seul appelant

Chaque clé est associée à un seul terminal. Attribuez-en une à chaque personne ou outil : chaque appel y sera enregistré. Révoquez-en une, les autres resteront fonctionnelles ; la révocation prend effet en cinq minutes environ.

Lecture seule, de votre côté du mur

L'agent exécute la seule commande SELECT enregistrée, et rien d'autre, depuis votre réseau, via sa propre connexion sortante. Aucun port n'est à ouvrir et aucune authentification n'est requise sur Internet.

Chaque appel dans le registre

Le Activité L'onglet affiche chaque appel avec l'heure, le destinataire, le statut, le nombre de lignes, la taille en octets et la durée, y compris les appels refusés. Définissez un Expiration Durée de vie d'un partage temporaire et le point de terminaison s'éteint automatiquement à la date indiquée.

Quand quelque chose ne fonctionne pas

StatutCodeCe qu'il faut faire
401CLÉ_API_REQUISE / CLÉ_API_INVALIDEL'en-tête est manquant ou la clé est incorrecte. Envoyer Clé X-API : qsapi_…, les 49 caractères au total. Les clés peuvent être copiées à nouveau depuis l'onglet Partage du point de terminaison.
403API_KEY_ENDPOINT_MISMATCHUne clé valide utilisée sur un autre point de terminaison. Chaque clé est associée à un seul point de terminaison.
403CLÉ_API_RÉVOQUÉE / POINT_DE_TERMINATURE_API_EXPIRÉLa clé a été révoquée ou le point de terminaison a expiré. Générez une nouvelle clé ou restaurez le point de terminaison.
400PARAMÈTRE_API_NON_REMPLACEABLEVous avez envoyé un paramètre que son propriétaire n'a pas marqué comme appelable. Le corps de la requête liste les noms autorisés.
414API_QUERY_TOO_LARGELa chaîne de requête GET a transmis 8 Ko ou 200 valeurs de liste. Envoyez les mêmes paramètres sous forme de corps JSON pour une requête POST.
413API_OUTPUT_TOO_LARGELe résultat a dépassé la limite de 8 Mio. Affinez la requête ou basculez le point de terminaison en mode Streaming.
429API_RATE_LIMITÉETrop d'appels en ce moment pour la clé ou le point de terminaison. Attendez le Réessayer après secondes, ou augmenter Limite de débit sous Paramètres API → Valeurs par défaut dans votre forfait.
429API_DATA_REALM_EXHAUSTEDLe forfait de données mensuel du propriétaire est épuisé. Il est réinitialisé au début du mois de facturation ; pour en bénéficier, passez à un forfait supérieur.
503API_AGENT_NOT_CONNECTEDL'agent qui gère votre base de données PlanetScale est hors ligne. Vérifiez-le dans Données → Agents de données ; les appels fonctionneront à nouveau dès qu'il sera reconnecté.
504DÉLAI D'EXPÉDITION DE REQUÊTE APILa requête a pris plus de 60 secondes. Ajoutez un filtre ou un index, ou enregistrez une requête plus précise.

Chaque corps d'erreur a la forme {"erreur": {"code": "…", "message": "…"}} et chaque réponse comporte un Identifiant de requête X-QS En-tête. Veuillez indiquer l'identifiant lorsque vous écrivez au support.

Questions que se posent les gens

Mes données sont-elles copiées dans Query Streams ?

Non. L'agent exécute la requête à l'endroit où se trouvent vos données et n'envoie que les lignes demandées. Aucune synchronisation ni mise en cache n'est effectuée entre les deux ; chaque appel exécute la requête.

Les appelants peuvent-ils modifier la requête SQL ou demander d'autres tables ?

Non. Un point de terminaison exécute une seule requête enregistrée. Les appelants peuvent uniquement définir les paramètres que vous avez marqués. Appelableet les valeurs sont liées en toute sécurité : le texte est mis entre guillemets et échappé, les nombres sont vérifiés dans les plages, les listes sont développées.

Comment puis-je transmettre cela à un partenaire ?

Sur le point de terminaison Partage onglet choisir Personnes et saisissez leur adresse e-mail. Ils reçoivent un lien magique, se connectent avec cette adresse (un compte gratuit suffit) et génèrent leur propre clé ; vous voyez leurs appels par nom dans l’onglet Activité. Pour un serveur ou un outil d’automatisation, créez un Clé API avec une étiquette à la place.

Que se passe-t-il lorsque je modifie la requête enregistrée ?

Le point de terminaison exécute la nouvelle requête SQL lors du prochain appel et sa spécification OpenAPI est régénérée. L'URL et les clés restent inchangées. Si vous ajoutez ou supprimez un filtre, veuillez consulter à nouveau le point de terminaison. Paramètres de verrouillage pour que les appelants voient les paramètres corrects.

Le forfait gratuit couvre-t-il vraiment cela ?

Oui. L'offre gratuite est un forfait permanent, et non une période d'essai limitée dans le temps. Elle comprend un point de terminaison, deux clés et 250 lignes par appel. Consultez la liste complète des éléments inclus sur la page suivante : page de tarification.

Le point de terminaison utilise-t-il le dialecte SQL de PlanetScale ?

Oui, car votre requête SQL vous appartient. Vous l'avez écrite et exécutée sur votre base de données Postgres PlanetScale dans Query Builder ; le point de terminaison exécute exactement cette même requête via la même connexion, avec vos valeurs de paramètres liées comme prévu par PlanetScale.

Ma base de données PlanetScale Postgres doit-elle être accessible depuis Internet ?

Non. Seul l'agent doit y accéder, depuis n'importe quel ordinateur connecté à Internet. L'agent établit une seule connexion sortante vers Query Streams ; les appelants communiquent avec api.querystreams.com et jamais avec votre serveur.

Toujours bloqué ? Ouvrir Soutien Dans Query Streams, indiquez-nous l'étape à laquelle vous vous trouvez et ce que vous voyez. Nous vous mettrons en relation.

Chaque guide pour PlanetScale

Ce n'est pas tout à fait votre configuration ?

  • Vous utilisez PostgreSQL sur votre propre serveur ou ordinateur ? Utilisez la carte PostgreSQL → PostgreSQL

Setup trouble?

  • Want the Agent to sign in with a login that can only read? Create a read-only database user, with copy-paste SQL for each database → Create a read-only database user
  • Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?
Updated on 27 septembre 2026

Powered by BetterDocs