Draai een Azure MySQL 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 Azure MySQL-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 eindpunt.
Wat je uiteindelijk overhoudt
Een URL op api.querystreams.com Hiermee worden de rijen van uw opgeslagen Azure MySQL-query als JSON of CSV geretourneerd aan iedereen die een sleutel heeft. Deze functie is getest vanuit de console in de portal voordat u deze deelt. Zoals dit:
| Sleutel | Waarde | Beschrijving |
|---|---|---|
stad string Optioneel | Seattle | Aanroepbaar filter uit de opgeslagen query |
X-API-sleutel | qsapi_AB•••••••••• | Jouw geheime token |
{
"stad": "Seattle"
}| Koptekst | Waarde | Beschrijving |
|---|---|---|
X-API-sleutel | qsapi_AB•••••••••• | Uw geheime token. Eén per beller, op elk moment intrekbaar. |
Inhoudstype | applicatie/json | De parameters worden verzonden als een JSON-body. |
Accepteren | applicatie/json | Je 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"}'{
"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" }
}| Koptekst | Waarde | Beschrijving |
|---|---|---|
inhoudstype | application/json; charset=utf-8 | De envelop op het tabblad 'Body' |
inhoudslengte | 412 | Aantal geretourneerde bytes; de groottebadge hierboven |
Azure Database for MySQL 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 leveren te veel gegevens op: een database-login die het project overleeft, een dagelijkse export die 's ochtends alweer verouderd is, of een kleine API-server die iemand nu moet beheren en patchen. Query Streams maakt van het eindpunt een opgeslagen query plus een sleutel. De agent die al op uw Azure MySQL-server staat, 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.
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 Azure MySQL-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.
-
Sla de zoekopdracht op.
In Querybouwer Kies je Azure MySQL-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 · klantenSELECT klant-ID, naam, stad VAN klanten VOLGORDE DOOR naam LIMIET 100;
Als bellers moeten kunnen filteren, voeg dan bijvoorbeeld een dynamisch filter toe.
WAAR stad = @stad. Elk@variablewordt een API-parameter in stap 3. Klik Sla en geef de query een naam; die naam wordt de weergavenaam van het eindpunt. -
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.
-
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.
-
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. Je Azure MySQL-server reageert nu via een URL, alleen-lezen, op de sleutels die je uitdeelt. Er is niets geïnstalleerd, geen poort geopend en de SQL-server is in je 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:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
"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:
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/csvdoet 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
| Plan | Eindpunten | Sleutels per eindpunt | Personen per eindpunt | Rijen per oproep (statisch) | Rijen per oproep (streaming) | Gesprekken per minuut, per toets |
|---|---|---|---|---|---|---|
| Gratis | 1 | 2 | 1 | 250 | 250 | 3 |
| Persoonlijke kern | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| Persoonlijk Plus | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| Bedrijfskern | 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 |
| Enterprise Core | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| Enterprise 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 |
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
| Status | Code | Wat te doen |
|---|---|---|
| 401 | API_KEY_REQUIRED / API_KEY_INVALID | De 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. |
| 403 | API_KEY_ENDPOINT_MISMATCH | Een geldige sleutel die op een ander eindpunt wordt gebruikt. Elke sleutel hoort bij één eindpunt. |
| 403 | API_KEY_REVOKED / API_ENDPOINT_EXPIRED | De sleutel is ingetrokken of het eindpunt heeft de vervaldatum bereikt. Genereer een nieuwe sleutel of herstel het eindpunt. |
| 400 | API_PARAM_NOT_OVERRIDABLE | Je hebt een parameter verzonden die de eigenaar niet als 'Callable' heeft gemarkeerd. In de body staan de toegestane namen vermeld. |
| 414 | API_QUERY_TE_GROOT | De GET-queryreeks bevat 8 KB of 200 lijstwaarden. Verstuur dezelfde parameters als in de JSON-body van een POST-verzoek. |
| 413 | API_UITVOER_TE_GROOT | Het resultaat overschreed de limiet van 8 MiB. Verfijn de query of schakel het eindpunt over naar streaming. |
| 429 | API-tarief beperkt | Er 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. |
| 429 | API_DATA_REALM_UITGEPUT | Het maandelijkse datalimiet van de eigenaar is opgebruikt. Het wordt aan het begin van de factureringsmaand gereset; upgrade voor meer data. |
| 503 | API_AGENT_NIET_VERBONDEN | De agent achter uw Azure MySQL-database is offline. Controleer dit onder Gegevens → Gegevensagents; de aanroepen zullen weer lukken zodra de verbinding hersteld is. |
| 504 | API_QUERY_TIMEOUT | De 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 het SQL-dialect van Azure MySQL?
Ja, want de SQL-query is van jou. Je hebt hem zelf geschreven en uitgevoerd op je Azure MySQL-server in Query Builder; het eindpunt voert precies diezelfde instructie uit via dezelfde verbinding, waarbij jouw parameterwaarden worden gebonden zoals Azure MySQL dat verwacht.
Moet mijn Azure MySQL-server 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.
Gerelateerde handleidingen
Elke gids voor Azure MySQL
Is dit niet helemaal jouw situatie?
- Gebruikt u een andere Azure-database? Azure PostgreSQL en Azure SQL hebben elk hun eigen kaart → Azure Postgres, Azure SQL
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?

