Categorieën bekijken

Fly.io Postgres REST API: Verander een SQL-query in een endpoint

REST API · Fly.io naar een eindpunt

Draai een Fly.io SQL-query in een REST API eindpunt

Sla een query op in de querybuilder door te klikken. Nieuw eindpuntEn je hebt een URL op api.querystreams.com met een eigen sleutel. De SQL-query wordt alleen-lezen uitgevoerd op de agent die al bij je Fly.io-database staat; de aanroeper ontvangt JSON of CSV en ziet nooit de SQL-query, het schema of een wachtwoord. Niets te hosten, geen poort te openen. Ongeveer 90 seconden vanaf een opgeslagen query, en het gratis abonnement dekt je eerste endpoint.

Ongeveer 90 seconden na een opgeslagen zoekopdracht Geen server om te hosten Uw inloggegevens blijven bij u. Eén sleutel per beller, op elk moment intrekbaar.
Loop je ergens vast? Vraag het ons gerust. Open Ondersteuning Ga naar Query Streams (menu rechtsboven → Ondersteuning) en stuur ons een bericht. Echte mensen lezen het, en "Ik weet niet wat er op dit scherm wordt gevraagd" is een volkomen terechte vraag.

Wat je uiteindelijk overhoudt

Fly.io Postgres-logoEen URL op api.querystreams.com Die de rijen van je opgeslagen Fly.io-query als JSON of CSV retourneert aan iedereen die een sleutel heeft, getest vanuit de console in het portaal voordat je deze deelt. Zoals dit:

NAapi.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19
SleutelWaardeBeschrijving
stad string OptioneelSeattleAanroepbaar filter uit de opgeslagen query
X-API-sleutelqsapi_AB••••••••••Jouw geheime token
{
  "stad": "Seattle"
}
KoptekstWaardeBeschrijving
X-API-sleutelqsapi_AB••••••••••Uw geheime token. Eén per beller, op elk moment intrekbaar.
Inhoudstypeapplicatie/jsonDe parameters worden verzonden als een JSON-body.
Accepterenapplicatie/jsonJe krijgt JSON terug; als je om tekst/csv vraagt, krijg je CSV terug.
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"}'
Status 200 OKTijd 84 msMaat 412 BAfgekapt Nee
{
  "kolommen": [ { "naam": "klant_id", "type": "geheel getal" }, { "naam": "naam", "type": "snaar" }, { "naam": "stad", "type": "snaar" } ],
  "rijen": [
    { "klant_id": 1042, "naam": "Northwind Traders", "stad": "Seattle" },
    { "klant_id": 1057, "naam": "Alpine Outfitters", "stad": "Denver" },
    { "klant_id": 1063, "naam": "Harbour Foods", "stad": "Halifax" }
  ],
  "meta": { "rij_aantal": 3, "agent_duration_ms": 41, "verzoek_id": "req_7Hq2mKd9" }
}
KoptekstWaardeBeschrijving
inhoudstypeapplication/json; charset=utf-8De envelop op het tabblad 'Body'
inhoudslengte412Aantal geretourneerde bytes; de groottebadge hierboven
Alleen-lezen: één opgeslagen query, verder niets. SQL verlaat uw account nooit. Elke oproep op het tabblad Activiteit

Fly.io Postgres bewaart uw gegevens in de cloud, beheerd door de provider. Iemand anders wil een deel van die gegevens gebruiken in zijn of haar app, dashboard of script, en de gebruikelijke oplossingen bieden te veel: een database-login die het project overleeft, een dagelijkse export die 's ochtends alweer verouderd is, of een kleine API-server die iemand anders moet beheren en patchen. Query Streams maakt van het eindpunt een opgeslagen query plus een sleutel. De agent die al in uw Fly.io Managed Postgres-cluster aanwezig is, voert de query uit, api.querystreams.com controleert de sleutel en de limiet voor het aantal aanvragen, en de aanroeper ontvangt de rijen. De SQL, het schema en de inloggegevens verlaten uw account nooit.

WAAR DE AGENT HEEN RENTelke computer of server die altijd aan staat en internettoegang heeftUw Fly.io-databaseinloggegevens blijven hierQuery Streams Agentvoert de opgeslagen query uitapi.querystreamscontroleert de sleutelHTTPS · alleen rijen, nooit de SQLWIE DE SLEUTEL OOK IN BEZIT HEEFTjouw app, een dashboard, een partner, een scriptGET of POST met X-API-sleutelJSON, CSV of NDJSON retour
De agent beheert uw gegevens en voert de query uit. api.querystreams.com controleert de sleutel en de snelheidslimiet en stuurt de rijen door. De beller bereikt uw netwerk nooit.

Wat je nodig hebt

Een Query Streams-account

Elk abonnement bevat de REST API. Met het gratis abonnement krijg je één endpoint, twee sleutels en 250 rijen per aanroep, wat voldoende is om deze handleiding te maken. Meld je aan via mijn.querystreams.nl.

De Agent op elke computer die altijd aan staat, met de Fly.io-verbinding toegevoegd.

Het enige wat nodig is, is een internetverbinding.

Een opgeslagen query in Query Builder

Het eindpunt omvat precies één opgeslagen query. Schrijf de SELECT-query, voer deze eenmaal uit en sla hem op. Voeg een dynamisch filter toe (een @variable (in de WHERE-clausule) als bellers moeten kunnen filteren.

Wie kan eindpunten creëren? Eigenaren, beheerders en makers. Als de API Dit item ontbreekt in je bovenste balk. Een beheerder kan het voor je gebruiker inschakelen via Account → MachtigingenIedereen met wie u een eindpunt deelt, heeft alleen een Query Streams-account nodig, ongeacht het abonnement.

Stel het in vier stappen in.

  1. Sla de zoekopdracht op.

    In Querybouwer Kies je Fly.io-verbinding, schrijf de SELECT-query die je wilt publiceren en voer deze eenmaal uit om de rijen te bekijken. Beperk je tot de kolommen die de aanroeper nodig heeft; het eindpunt retourneert precies wat de query retourneert.

    Opgeslagen zoekopdracht · klanten
    SELECT klant-ID, naam, stad
    VAN publiek.klanten
    VOLGORDE DOOR naam
    LIMIET 100;

    Als bellers moeten kunnen filteren, voeg dan bijvoorbeeld een dynamisch filter toe. WAAR stad = @stad. Elk @variable wordt een API-parameter in stap 3. Klik Sla en geef de query een naam; die naam wordt de weergavenaam van het eindpunt.

  2. Maak het eindpunt aan.

    Open API klik in de bovenste balk Nieuw eindpuntDe tovenaar heeft vier stappen. Selecteer zoekopdracht, Configureren, Vergrendelingsparameters en Delen. Op Selecteer zoekopdrachtKlik op de query die u zojuist hebt opgeslagen; queries waarvan de agent offline is, worden grijs weergegeven. Klik Volgende.

    Snelkoppeling. Vanuit de querybuilder kunt u de geopende query direct weergeven; de wizard start dan bij Configureren waarbij de zoekopdracht al is gekozen.

  3. Parameters configureren en vergrendelen

    Op Configureren De standaardinstellingen zijn correct voor een eerste eindpunt: Weergavenaam ingevuld op basis van de zoekopdracht, Levensduur Permanent (kies Verloopt (voor een tijdelijk aandeel), Reactiemodus Statisch (één JSON-antwoord; selecteer Streaming voor resultaten die de statische rijlimiet van uw plan overschrijden). Binnenindeling JSON. De responsmodus en -indeling worden vastgelegd zodra de respons is aangemaakt, dus bepaal ze hier. Klik Volgende.

    Op Vergrendelingsparameters Alle dynamische filters in de query worden weergegeven. Laat de filters die bellers kunnen instellen ongewijzigd. Oproepbaar en geef elk een Naam van de queryreeks; vinkje Vereist Als een oproep zonder deze waarde zou mislukken, stel dan een waarde in die de beller niet mag wijzigen. Vergrendeld, of een datumscenario zoals Begin van de maand. Verborgen behoudt de standaardwaarde van de query zelf en weigert elke poging om deze in te stellen. Klik Volgende.

  4. Deel en ontvang je sleutel

    Op Delen je kunt uitnodigen Mensen via e-mail of voeg een toe Servicesleutel voor een server of een automatiseringstool, of sla beide voorlopig over. Klik Maak mijn sleutel aan en ontvang deze.Het succesenscherm toont de endpoint-URL en uw sleutel: een tekenreeks van 49 tekens die begint met qsapi_Kopieer het. Je kunt het later weer weergeven via het eindpunt. Delen tab, zodat het niet verloren gaat als je het scherm sluit.

    Klik op Versturen in de console om de eerste oproep vanuit het portaal zelf te doen. Het antwoordvenster toont Status, Tijd en Maat, de Lichaam Het tabblad toont de JSON en de oproep verschijnt op de Activiteit tab een paar seconden later.

Dat is alles. Uw Fly.io Managed Postgres-cluster reageert nu via een URL, alleen-lezen, op de sleutels die u verstrekt. Er is niets geïnstalleerd, geen poort geopend en de SQL-database is in uw account gebleven.

Bel het vanaf elke locatie

Vervang de endpoint-ID door die van jou uit de adresbalk van de console en qsapi_UW_SLEUTEL met uw sleutel. Aanroepbare parameters worden in de queryreeks van een GET-verzoek geplaatst; hier wordt de opgeslagen query weergegeven. stad:

GET · parameters in de queryreeks
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
Reactie · 200 OK · application/json
{
  "kolommen": [ { "naam": "klant_id", "type": "geheel getal" }, { "naam": "naam", "type": "snaar" }, { "naam": "stad", "type": "snaar" } ],
  "rijen": [
    { "klant_id": 1042, "naam": "Northwind Traders", "stad": "Seattle" },
    { "klant_id": 1057, "naam": "Alpine Outfitters", "stad": "Denver" },
    { "klant_id": 1063, "naam": "Harbour Foods", "stad": "Halifax" }
  ],
  "meta": { "rij_aantal": 3, "agent_duration_ms": 41, "verzoek_id": "req_7Hq2mKd9" }
}

De rijen worden geretourneerd als objecten, gesleuteld op kolomnaam, met de kolomlijst en een meta Een blok dat aangeeft hoeveel rijen er zijn, of het resultaat is afgekapt en de aanvraag-ID die je kunt gebruiken ter ondersteuning. Dezelfde aanroep als een POST-verzoek plaatst de parameters in een JSON-body, wat de juiste keuze is voor lange lijsten met waarden:

POST · parameters in een JSON-body
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 in plaats van JSON, inclusief kopregel. Accepteren: tekst/csv doet hetzelfde. Streaming-eindpunten retourneren NDJSON (één JSON-object per regel) met een eindpunt {"_summary": true, "row_count": N} regel; controleer die laatste regel.
?sample=true
Maximaal vijf rijen, niet gefactureerd. Handig voor het aansluiten van een klant.
compressie=lz4
Een LZ4-frame behuizing voor apparaten met een hoog belvolume en een decoder; Code Het tabblad bevat het decoderfragment per taal. Standaard gzip wordt automatisch toegepast wanneer uw client een bericht verzendt. Accept-Encoding: gzip.
Autorisatie: Drager qsapi_…
Geaccepteerd als alias voor X-API-sleutelGebruik het vanuit de browsercode.

Waar het aangesloten wordt

Excel en Power BI

Exporteren → Power Query M (.pq) Dit geeft je een kant-en-klare query. Plak deze in de geavanceerde editor (Excel: Gegevens → Gegevens ophalen → Van andere bronnen → Lege query; Power BI: Start → Gegevens transformeren → Nieuwe bron → Lege query) en vervang de placeholder door je eigen query. qsapi_ sleutel.

Postbode, slapeloosheid, hinkelen

Hetzelfde Exporteren Met het menu kunt u een Postman v2.1-collectie, een Insomnia v5-export of een Hoppscotch-collectie downloaden, waarbij de parameters zijn ingevuld en een placeholder voor de sleutel is toegevoegd.

Je eigen code

De Code Het tabblad bevat werkende voorbeelden voor cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell en Ruby. Exporteren → OpenAPI 3.1-specificatie Voedt elke clientgenerator of Swagger UI.

n8n, Zapier, Make, cron

Maak een Servicesleutel Plak voor de tool de URL en de sleutel in het HTTP-knooppunt en plan de uitvoering in. Elke tool krijgt een eigen sleutel, zodat je er één kunt intrekken zonder de andere aan te raken.

Wat de plannen toestaan

PlanEindpuntenSleutels per eindpuntPersonen per eindpuntRijen per oproep (statisch)Rijen per oproep (streaming)Gesprekken per minuut, per toets
Gratis1212502503
Persoonlijke kern2325,000250,00015
Persoonlijk Plus55510,000500,00030
Bedrijfskern5101050,0001,000,000300
Business Plus102025100,0005,000,000600
Business Max253050250,00010,000,000600
Enterprise Core5050100500,00025,000,0001,000
Enterprise Plus1001002501,000,00050,000,0001,000
Enterprise Max2502005002,500,000100,000,0001,500

Elke aanroep heeft een vaste time-out van 60 seconden voor de query en een maximale responsgrootte van 8 MiB. De geretourneerde bytes tellen mee voor je maandelijkse datalimiet, dezelfde limiet die de Excel- en Google Sheets-invoegtoepassingen gebruiken. De gratis versie heeft één eindpunt en 5 MB per maand, wat ruim voldoende is voor een kleine tabel die meerdere keren per dag wordt opgevraagd. Bekijk de prijspagina. voor de vergoedingen per plan.

Gratis is een abonnement dat je behoudt. Het is geen proefperiode die verloopt. Bekijk precies wat het inhoudt op de website. prijspagina.

Het veilig bewaren

De SQL-gegevens blijven van jou.

Bellers ontvangen rijen. Ze zien nooit de query, de tabelnamen of de verbindingsgegevens, en ze kunnen niet wijzigen wat het eindpunt uitvoert.

Eén sleutel, één eindpunt, één beller.

Een sleutel werkt voor precies één eindpunt. Geef elke persoon of tool een eigen sleutel, en elk gesprek wordt daaraan gekoppeld. Trek één sleutel in en de andere blijven werken; de intrekking wordt binnen ongeveer vijf minuten van kracht.

Alleen-lezen, aan jouw kant van de muur.

De agent voert de opgeslagen SELECT-opdracht uit, en verder niets, vanuit uw eigen netwerk, via een eigen uitgaande verbinding. Er hoeft geen poort geopend te worden en er zijn geen inloggegevens nodig via internet.

Elke oproep in het grootboek

De Activiteit Het tabblad toont elk gesprek met tijd, ontvanger, status, rijen, bytes en duur, inclusief geweigerde gesprekken. Stel een Verloopt De levensduur van een tijdelijke share is beperkt en het eindpunt schakelt zichzelf op die datum uit.

Als iets niet werkt

StatusCodeWat te doen
401API_KEY_REQUIRED / API_KEY_INVALIDDe header ontbreekt of de sleutel is onjuist. Verzenden X-API-sleutel: qsapi_…Alle 49 tekens. Sleutels kunnen opnieuw worden gekopieerd via het tabblad 'Delen' van het eindpunt.
403API_KEY_ENDPOINT_MISMATCHEen geldige sleutel die op een ander eindpunt wordt gebruikt. Elke sleutel hoort bij één eindpunt.
403API_KEY_REVOKED / API_ENDPOINT_EXPIREDDe sleutel is ingetrokken of het eindpunt heeft de vervaldatum bereikt. Genereer een nieuwe sleutel of herstel het eindpunt.
400API_PARAM_NOT_OVERRIDABLEJe hebt een parameter verzonden die de eigenaar niet als 'Callable' heeft gemarkeerd. In de body staan de toegestane namen vermeld.
414API_QUERY_TE_GROOTDe GET-queryreeks bevat 8 KB of 200 lijstwaarden. Verstuur dezelfde parameters als in de JSON-body van een POST-verzoek.
413API_UITVOER_TE_GROOTHet resultaat overschreed de limiet van 8 MiB. Verfijn de query of schakel het eindpunt over naar streaming.
429API-tarief beperktEr zijn deze minuut te veel oproepen voor de sleutel of het eindpunt. Wacht even. Opnieuw proberen na seconden, of verhogen Snelheidslimiet Onder API-instellingen → Standaardwaarden in uw abonnement.
429API_DATA_REALM_UITGEPUTHet maandelijkse datalimiet van de eigenaar is opgebruikt. Het wordt aan het begin van de factureringsmaand gereset; upgrade voor meer data.
503API_AGENT_NIET_VERBONDENDe agent achter uw Fly.io-database is offline. Controleer dit onder Gegevens → Gegevensagenten; de gesprekken zullen weer succesvol verlopen zodra de verbinding hersteld is.
504API_QUERY_TIMEOUTDe query duurde langer dan 60 seconden. Voeg een filter of een index toe, of sla een meer specifieke query op.

Elk foutlichaam heeft de vorm {"error": {"code": "…", "message": "…"}} en elk antwoord bevat een X-QS-Request-Id koptekst. Vermeld het ID tussen aanhalingstekens wanneer u contact opneemt met de supportafdeling.

Vragen die mensen stellen

Worden mijn gegevens naar Query Streams gekopieerd?

Nee. De agent voert de query uit op de locatie waar uw gegevens zich bevinden en verzendt alleen de rijen waar de oproep om heeft gevraagd. Er vindt tussendoor geen synchronisatie of cache plaats; elke oproep voert de query uit.

Kunnen bellers de SQL-query wijzigen of om andere tabellen vragen?

Nee. Een eindpunt voert één opgeslagen query uit. Aanroepers kunnen alleen de parameters instellen die u hebt gemarkeerd. OproepbaarEn de waarden worden veilig afgeschermd: tekst wordt tussen aanhalingstekens geplaatst en ontsnapt, getallen worden gecontroleerd op bereik en lijsten worden uitgebreid.

Hoe geef ik dit aan een partner?

Op het eindpunt Delen tab kiezen Mensen en voer hun e-mailadres in. Ze ontvangen een magische link, loggen in met dat adres (een gratis account is voldoende) en genereren hun eigen sleutel; je ziet hun oproepen op naam op het tabblad Activiteit. Voor een server of een automatiseringstool maak je een API-sleutel met een etiket in plaats daarvan.

Wat gebeurt er als ik de opgeslagen query bewerk?

Het eindpunt voert de nieuwe SQL-query uit bij de volgende aanroep en de OpenAPI-specificatie wordt opnieuw gegenereerd. De URL en de sleutels blijven ongewijzigd. Als u een filter toevoegt of verwijdert, ga dan opnieuw naar de betreffende pagina. Vergrendelingsparameters zodat bellers de juiste parameters te zien krijgen.

Is dit echt inbegrepen bij het gratis abonnement?

Ja. Gratis is een abonnement dat je behoudt, geen proefperiode die verloopt. Het omvat één eindpunt, twee sleutels en 250 rijen per aanroep. Bekijk precies wat het inhoudt op de website. prijspagina.

Ondersteunt het eindpunt de SQL-dialect van Fly.io?

Ja, want de SQL-query is van jou. Je hebt hem zelf geschreven en uitgevoerd op je Fly.io Managed Postgres-cluster in Query Builder; het eindpunt voert precies diezelfde query uit via dezelfde verbinding, waarbij jouw parameterwaarden op de door Fly.io gewenste manier zijn gebonden.

Moet mijn Fly.io Managed Postgres-cluster bereikbaar zijn vanaf het internet?

Nee. Alleen de agent hoeft er toegang toe te hebben, vanaf elke computer die altijd aan staat en internettoegang heeft. De agent maakt één uitgaande verbinding met Query Streams; bellers communiceren met api.querystreams.com en nooit met uw server.

Zit je nog steeds vast? Open Ondersteuning Ga naar Query Streams en laat ons weten in welke stap u zich bevindt en wat u ziet. Dan zorgen wij ervoor dat u verbonden wordt.

Elke gids voor Fly.io

Is dit niet helemaal jouw situatie?

  • Draait u PostgreSQL op uw eigen server of computer? Gebruik dan de PostgreSQL-kaart → 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?
Geüpdatet op 27 september 2026

Mogelijk gemaakt door BetterDocs