Tournez un Système de fichiers 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 terminaison, and you have a URL at api.querystreams.com with its own key. The SQL runs read-only on the Agent that already reads your File System file; the caller gets JSON or CSV and never sees the SQL, the schema or a password. Nothing to host, no port to open. About 90 seconds from a saved query, and the Free plan covers your first endpoint.
Ce que vous obtiendrez
Une URL à api.querystreams.com qui renvoie les lignes de votre requête système de fichiers 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 :
| Clé | Valeur | Description |
|---|---|---|
modifié_utc chaîne Facultatif | Seattle | Filtre appelable à partir de la requête enregistrée |
Clé X-API | qsapi_AB•••••••••• | Votre jeton secret |
{
"modifié_utc": "Seattle"
}| En-tête | Valeur | Description |
|---|---|---|
Clé X-API | qsapi_AB•••••••••• | Votre jeton secret. Un par appelant, révocable à tout moment. |
Type de contenu | application/json | Les paramètres sont transmis sous forme de corps JSON |
Accepter | application/json | Ré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_VOTRE_CLÉ" \ -H "Content-Type: application/json" \ -d '{"modified_utc": "Seattle"}'{
« colonnes »: [ { "nom": "chemin_relatif", "taper": "entier" }, { "nom": "taille_octets", "taper": "chaîne" }, { "nom": "modifié_utc", "taper": "chaîne" } ],
"rangées": [
{ "chemin_relatif": 1042, "taille_octets": « Les Marchands du Vent du Nord », "modifié_utc": "Seattle" },
{ "chemin_relatif": 1057, "taille_octets": « Pourvoyeurs alpins », "modifié_utc": "Denver" },
{ "chemin_relatif": 1063, "taille_octets": "Harbour Foods", "modifié_utc": "Halifax" }
],
"méta": { "row_count": 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}| En-tête | Valeur | Description |
|---|---|---|
type de contenu | application/json; charset=utf-8 | L'enveloppe sur l'onglet Corps |
longueur du contenu | 412 | Octets renvoyés ; l’icône Taille ci-dessus |
Le système de fichiers stocke vos données dans des fichiers sur un ordinateur que vous contrôlez. Si un tiers souhaite y accéder via son application, son tableau de bord ou son script, les solutions habituelles impliquent trop de partage de données : un identifiant de base de données qui disparaît avec le projet, une exportation nocturne obsolète dès le lendemain matin, ou un petit 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à présent sur votre ordinateur ou votre partage de fichiers, exécute la requête, api.querystreams.com vérifie la clé et la limite de requêtes, et l'appelant reçoit les lignes. Le code SQL, le schéma et les identifiants restent toujours sur votre compte.
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.
The Agent with your File System file added as a connection
Pas encore terminé ? Ajoutez-le sous Données → Agents de données ; cela prend environ dix minutes.
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
-
Enregistrer la requête
Dans Générateur de requêtes Choisissez votre connexion au système de fichiers, rédigez la requête SELECT à publier et exécutez-la une première 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 · fichiers.filesSELECTIONNER chemin_relatif, taille_octets, UTC_modifié, extension DE ensemble de fichiers.fichiers COMMANDE PAR modifié_utc DESC LIMITE 100
Si les appelants doivent pouvoir filtrer, ajoutez un filtre dynamique, par exemple.
OÙ modified_utc = @modified_utc. Chaque@variabledevient 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. -
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.
-
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.
-
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. Les fichiers et dossiers de votre ordinateur ou de votre partage de fichiers répondent désormais à une URL, en lecture seule, aux 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 modifié_utc:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?modified_utc=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
« colonnes »: [ { "nom": "chemin_relatif", "taper": "entier" }, { "nom": "taille_octets", "taper": "chaîne" }, { "nom": "modifié_utc", "taper": "chaîne" } ],
"rangées": [
{ "chemin_relatif": 1042, "taille_octets": « Les Marchands du Vent du Nord », "modifié_utc": "Seattle" },
{ "chemin_relatif": 1057, "taille_octets": « Pourvoyeurs alpins », "modifié_utc": "Denver" },
{ "chemin_relatif": 1063, "taille_octets": "Harbour Foods", "modifié_utc": "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.
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_VOTRE_CLÉ" \ -H "Content-Type: application/json" \ -d '{"params": {"modified_utc": "Seattle"}}'?format=csv- CSV au lieu de JSON, ligne d'en-tête incluse.
Accepter : texte/csvIl 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
| Plan | Points d'extrémité | Clés par point de terminaison | Personnes par point de terminaison | Lignes par appel (statique) | Lignes par appel (streaming) | Appels par minute, par touche |
|---|---|---|---|---|---|---|
| Gratuit | 1 | 2 | 1 | 250 | 250 | 3 |
| Noyau personnel | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| Personnel Plus | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| Cœur de métier | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| Business Plus | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| Business Max | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| Noyau d'entreprise | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| Entreprise Plus | 100 | 100 | 250 | 1,000,000 | 50,000,000 | 1,000 |
| Enterprise Max | 250 | 200 | 500 | 2,500,000 | 100,000,000 | 1,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
| Statut | Code | Ce qu'il faut faire |
|---|---|---|
| 401 | CLÉ_API_REQUISE / CLÉ_API_INVALIDE | L'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. |
| 403 | API_KEY_ENDPOINT_MISMATCH | Une clé valide utilisée sur un autre point de terminaison. Chaque clé est associée à un seul point de terminaison. |
| 403 | CLÉ_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. |
| 400 | PARAMÈTRE_API_NON_REMPLACEABLE | Vous 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. |
| 414 | API_QUERY_TOO_LARGE | La 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. |
| 413 | API_OUTPUT_TOO_LARGE | Le résultat a dépassé la limite de 8 Mio. Affinez la requête ou basculez le point de terminaison en mode Streaming. |
| 429 | API_RATE_LIMITÉE | Trop 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. |
| 429 | API_DATA_REALM_EXHAUSTED | Le 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. |
| 503 | API_AGENT_NOT_CONNECTED | L'agent associé à votre fichier de système de fichiers est hors ligne. Vérifiez-le sous Données → Agents de données ; les appels fonctionneront à nouveau dès qu'il sera reconnecté. |
| 504 | DÉLAI D'EXPÉDITION DE REQUÊTE API | La 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 du système de fichiers ?
Oui, car votre requête SQL vous appartient. Vous l'avez écrite et exécutée sur les fichiers et dossiers de votre ordinateur ou de votre partage de fichiers dans Query Builder ; le point de terminaison exécute exactement la même requête via la même connexion, avec vos valeurs de paramètres liées de la manière attendue par le système de fichiers.
Les fichiers et dossiers de votre ordinateur ou de votre partage de fichiers doivent-ils être accessibles depuis Internet ?
Non. Seul l'agent doit y accéder, depuis votre réseau. L'agent établit une seule connexion sortante vers Query Streams ; les appelants communiquent avec api.querystreams.com et jamais avec votre ordinateur.
Guides associés
Chaque guide pour File System
Ce n'est pas tout à fait votre configuration ?
- Vous avez besoin des données contenues dans les fichiers, et pas seulement de la liste ? Sélectionnez la fiche correspondant à votre type de fichier, par exemple Dossier CSV ou Dossier Excel → Comment interroger un dossier de fichiers
Setup trouble?
- Agent says the file or folder does not exist, or access is denied? Mapped drives, network shares, OneDrive and Linux home folders each need one fix → Where the Agent can read files from
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

