Girare un Supabase Query SQL in un API REST endpoint
Salva una query in Query Builder, fai clic Nuovo endpointHai a disposizione un URL su api.querystreams.com con una chiave dedicata. La query SQL viene eseguita in sola lettura sull'agente già presente nel tuo database Supabase; chi effettua la chiamata riceve un file JSON o CSV e non visualizza mai la query SQL, lo schema o la password. Non è necessario ospitare nulla né aprire porte. Il tempo di risposta è di circa 90 secondi da una query salvata e il piano gratuito include il primo endpoint.
Quello che otterrai alla fine
Un URL a api.querystreams.com che restituisce le righe della query Supabase salvata in formato JSON o CSV a chiunque possieda una chiave, testata dalla console del portale prima della condivisione. In questo modo:
| Chiave | Valore | Descrizione |
|---|---|---|
città stringa Opzionale | Seattle | Filtro richiamabile dalla query salvata |
Chiave X-API | qsapi_AB•••••••••• | Il tuo token segreto |
{
"città": "Seattle"
}| Intestazione | Valore | Descrizione |
|---|---|---|
Chiave X-API | qsapi_AB•••••••••• | Il tuo token segreto. Uno per ogni chiamante, revocabile in qualsiasi momento. |
Tipo di contenuto | applicazione/json | I parametri vengono trasmessi come corpo JSON |
Accettare | applicazione/json | Risposta in formato JSON; se si richiede testo/CSV, si ottiene un file 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"}'{
"colonne": [ { "nome": "customer_id", "tipo": "intero" }, { "nome": "nome_azienda", "tipo": "corda" }, { "nome": "città", "tipo": "corda" } ],
"file": [
{ "customer_id": 1042, "nome_azienda": "Commercianti del Vento del Nord", "città": "Seattle" },
{ "customer_id": 1057, "nome_azienda": "Alpine Outfitters", "città": "Denver" },
{ "customer_id": 1063, "nome_azienda": "Harbour Foods", "città": "Halifax" }
],
"meta": { "conteggio_righe": 3, "durata_agente_ms": 41, "request_id": "req_7Hq2mKd9" }
}| Intestazione | Valore | Descrizione |
|---|---|---|
tipo di contenuto | applicazione/json; charset=utf-8 | La busta sulla scheda Corpo |
lunghezza del contenuto | 412 | Byte restituiti; il badge Dimensione sopra |
Supabase archivia i tuoi dati nel cloud, gestito dal suo provider. Qualcuno desidera accedervi per la propria app, dashboard o script, e le soluzioni tradizionali spesso comportano il trasferimento di troppe informazioni: credenziali di accesso al database che non sono più valide, un'esportazione notturna obsoleta già a colazione, o un piccolo server API che qualcun altro deve gestire e aggiornare. Query Streams trasforma l'endpoint in una query salvata con una chiave. L'agente già presente nel tuo database Supabase esegue la query, api.querystreams.com verifica la chiave e il limite di richieste, e chi effettua la chiamata riceve i risultati. Il codice SQL, lo schema e le credenziali non lasciano mai il tuo account.
Supabase fornisce già a ogni tabella un endpoint REST tramite PostgREST. Ciò che non offre è un endpoint per query SQL arbitrarie con join, aggregazioni e parametri personalizzati, condivisibili con utenti esterni al progetto. Questo è ciò che aggiunge questa funzionalità.
Cosa ti servirà
Un account Query Streams
Ogni piano include l'API REST. Il piano gratuito offre un endpoint, due chiavi e 250 righe per chiamata, sufficienti per realizzare questa guida. Registrati su my.querystreams.com.
L'agente su qualsiasi computer sempre acceso, con la connessione Supabase aggiunta
È sufficiente una connessione a Internet.
Una query salvata in Query Builder
L'endpoint incapsula esattamente una query salvata. Scrivi la SELECT, eseguila una volta, salvala. Aggiungi un filtro dinamico (un @variable nella clausola WHERE) se i chiamanti devono essere in grado di filtrare.
Chi può creare endpoint? Proprietari, amministratori e creatori. Se il API L'elemento manca dalla barra superiore, un amministratore può attivarlo per il tuo utente in Account → AutorizzazioniChiunque condivida un endpoint con te ha bisogno solo di un account Query Streams, indipendentemente dal piano.
Configuralo in quattro passaggi
-
Salva la query
In Generatore di query Scegli la tua connessione Supabase, scrivi la query SELECT che desideri pubblicare ed eseguila una volta per visualizzare le righe. Limitati alle colonne necessarie al chiamante; l'endpoint restituisce esattamente ciò che restituisce la query.
Query salvata · clienti pubbliciSELEZIONARE ID cliente, nome azienda, città DA clienti pubblici ORDINE DI nome_azienda LIMITE 100;
Se i chiamanti devono essere in grado di filtrare, aggiungi un filtro dinamico, ad esempio
DOVE city = @city. Ogni@variablediventa un parametro API nel passaggio 3. Fai clic Risparmiare e assegnare un nome alla query; tale nome diventerà il nome visualizzato dell'endpoint. -
Crea l'endpoint
Apri API nella barra superiore e fai clic Nuovo endpointLa procedura guidata prevede quattro passaggi, Query di selezione, Configurare, Parametri di blocco e Condividi. SU Query di selezione, fai clic sulla query appena salvata; le query il cui agente è offline sono visualizzate in grigio. Fai clic Avanti.
Scorciatoia. Da Query Builder è possibile esporre direttamente la query aperta; la procedura guidata inizia quindi da Configurare con la query già selezionata.
-
Configura e blocca i parametri
SU Configurare Le impostazioni predefinite sono corrette per un primo endpoint: Nome da visualizzare riempito dalla query, Durata Permanente (scegli In scadenza per una quota temporanea), Modalità di risposta Statico (una risposta JSON; scegli Streaming per risultati che superano il limite di righe statico del tuo piano), Formato grafico JSON. La modalità e il formato della risposta sono fissi una volta creati, quindi decidili qui. Fai clic Avanti.
SU Parametri di blocco Ogni filtro dinamico nella query è elencato. Lascia invariati quelli che i chiamanti possono impostare come Chiamabile e dare a ciascuno un Nome della stringa di query; tic tac Necessario se una chiamata senza di esso dovesse fallire. Fissa un valore che il chiamante non deve modificare con Chiuso, o uno scenario di appuntamento come Inizio del mese. Nascosto mantiene il valore predefinito della query e rifiuta qualsiasi tentativo di impostarlo. Fare clic Avanti.
-
Condividi e ottieni la tua chiave
SU Condividi puoi invitare Persone tramite e-mail o aggiungi un Chiave di servizio per un server o uno strumento di automazione, oppure salta entrambi per ora. Fai clic Crea e ottieni la mia chiave. La schermata di successo mostra l'URL dell'endpoint e la tua chiave: una stringa di 49 caratteri che inizia con
qsapi_. Copialo. Puoi visualizzarlo di nuovo in seguito dall'endpoint Condivisione scheda, in modo che non vada persa se chiudi lo schermo.Cliccare Inviare nella console per effettuare la prima chiamata dal portale stesso. Il riquadro di risposta mostra Stato, Tempo e Misurare, IL Corpo la scheda mostra il JSON e la chiamata appare su Attività premere il tasto pochi secondi dopo.
Questo è tutto. Il tuo database Supabase ora risponde a un URL, in sola lettura, alle chiavi che hai fornito. Non è stato installato nulla, non è stata aperta alcuna porta e il database SQL è rimasto nel tuo account.
Chiamalo da qualsiasi luogo
Sostituisci l'ID dell'endpoint con il tuo dalla barra degli URL della console e qsapi_LA_TUA_CHIAVE con la tua chiave. I parametri richiamabili vanno nella stringa di query su GET; qui la query salvata espone città:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
"colonne": [ { "nome": "customer_id", "tipo": "intero" }, { "nome": "nome_azienda", "tipo": "corda" }, { "nome": "città", "tipo": "corda" } ],
"file": [
{ "customer_id": 1042, "nome_azienda": "Commercianti del Vento del Nord", "città": "Seattle" },
{ "customer_id": 1057, "nome_azienda": "Alpine Outfitters", "città": "Denver" },
{ "customer_id": 1063, "nome_azienda": "Harbour Foods", "città": "Halifax" }
],
"meta": { "conteggio_righe": 3, "durata_agente_ms": 41, "request_id": "req_7Hq2mKd9" }
}Le righe vengono restituite come oggetti indicizzati dal nome della colonna, con l'elenco delle colonne e un meta blocco che indica il numero di righe, se il risultato è stato troncato e l'ID della richiesta che puoi citare all'assistenza. La stessa chiamata come POST inserisce i parametri in un corpo JSON, che è la scelta giusta per lunghi elenchi di valori:
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- File CSV anziché JSON, con riga di intestazione inclusa.
Accetta: testo/csvfa lo stesso. Gli endpoint di streaming restituiscono NDJSON (un oggetto JSON per riga) con un finale{"_summary": true, "row_count": N}riga; controlla quell'ultima riga. ?sample=true- Massimo cinque file, non fatturate. Utile per cablare un cliente.
?compression=lz4- Un corpo con telaio LZ4 per chiamanti ad alto volume con decoder; il Codice la scheda contiene il frammento del decodificatore per lingua. La semplice compressione gzip avviene automaticamente quando il client invia
Accept-Encoding: gzip. Autorizzazione: Portatore qsapi_…- Accettato come alias per
Chiave X-API. Utilizzalo dal codice del browser.
Dove si collega
Excel e Power BI
Esporta → Power Query M (pq) ti fornisce una query già pronta. Incollala nell'Editor avanzato (Excel: Dati → Ottieni dati → Da altre origini → Query vuota; Power BI: Home → Trasforma dati → Nuova origine → Query vuota) e sostituisci il segnaposto con la tua query. qsapi_ chiave.
Postino, Insonnia, Campana
Lo stesso Esportare Il menu consente di scaricare una raccolta Postman v2.1, un'esportazione Insomnia v5 o una raccolta Hoppscotch con i parametri già compilati e un segnaposto per la chiave.
Il tuo codice personale
IL Codice La scheda contiene esempi funzionanti per cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell e Ruby. Esporta → Specifiche OpenAPI 3.1 alimenta qualsiasi generatore client o interfaccia utente Swagger.
n8n, Zapier, Make, cron
Crea un Chiave di servizio Per lo strumento, incolla l'URL e la chiave nel relativo nodo HTTP e pianificalo. Ogni strumento ha la sua chiave, quindi puoi revocarne uno senza modificare gli altri.
Cosa consentono i piani
| Piano | Punti terminali | Chiavi per endpoint | Persone per endpoint | Righe per chiamata (statico) | Righe per chiamata (streaming) | Chiamate al minuto, per tasto |
|---|---|---|---|---|---|---|
| Gratuito | 1 | 2 | 1 | 250 | 250 | 3 |
| Nucleo personale | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| Plus personale | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| Nucleo aziendale | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| Business Plus | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| Gestione massima | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| Nucleo aziendale | 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 |
Ogni chiamata ha anche un timeout fisso di 60 secondi e un limite di risposta di 8 MiB, e i byte restituiti vengono conteggiati nel limite dati mensile del tuo piano, lo stesso limite utilizzato dai componenti aggiuntivi di Excel e Fogli Google. La versione gratuita ha un endpoint e 5 MB al mese, che sono più che sufficienti per una piccola tabella richiamata più volte al giorno. Consulta la pagina dei prezzi per le indennità previste dal piano.
Gratis è un piano che mantieni. Non è una prova che scade. Scopri esattamente cosa include su pagina dei prezzi.
Tenerlo al sicuro
Il codice SQL rimane tuo
Chi effettua la chiamata riceve solo le righe. Non vede mai la query, i nomi delle tabelle o i dettagli della connessione e non può modificare ciò che viene eseguito dall'endpoint.
Una chiave, un punto di accesso, un chiamante
Una chiave funziona per un solo endpoint. Assegna una chiave a ogni persona o strumento, e ogni chiamata verrà registrata a quel valore. Revocandone una, le altre continueranno a funzionare; la revoca ha effetto entro circa cinque minuti.
Sola lettura, dalla tua parte del muro
L'agente esegue l'unica query SELECT salvata e nient'altro, dall'interno della rete locale, tramite la propria connessione in uscita. Non è necessario aprire alcuna porta né richiedere credenziali su Internet.
Ogni chiamata nel registro
IL Attività La scheda mostra ogni chiamata con ora, destinatario, stato, righe, byte e durata, comprese quelle rifiutate. Imposta un In scadenza durata di vita per una condivisione temporanea e l'endpoint si disattiva automaticamente alla data.
Quando qualcosa non funziona
| Stato | Codice | Cosa fare |
|---|---|---|
| 401 | CHIAVE API RICHIESTA / CHIAVE API NON VALIDA | L'intestazione è mancante o la chiave è errata. Invia Chiave X-API: qsapi_…, tutti i 49 caratteri. Le chiavi possono essere copiate nuovamente dalla scheda Condivisione dell'endpoint. |
| 403 | API_KEY_ENDPOINT_MISMATCH | Una chiave valida utilizzata su un endpoint diverso. Ogni chiave appartiene a un singolo endpoint. |
| 403 | CHIAVE API REVOCATA / ENDPOINT API SCADUTO | La chiave è stata revocata o l'endpoint ha raggiunto la data di scadenza. Genera una nuova chiave o ripristina l'endpoint. |
| 400 | API_PARAM_NOT_OVERRIDABLE | Hai inviato un parametro che il proprietario non ha contrassegnato come richiamabile. Il corpo della richiesta elenca i nomi consentiti. |
| 414 | API_QUERY_TOO_LARGE | La stringa di query GET ha trasmesso 8 KB o 200 valori di elenco. Invia gli stessi parametri come corpo JSON POST. |
| 413 | API_OUTPUT_TOO_LARGE | Il risultato ha superato il limite di 8 MiB. Restringi la query o passa all'endpoint Streaming. |
| 429 | API_RATE_LIMITED | Troppe chiamate in questo minuto per la chiave o l'endpoint. Attendi il Riprova dopo secondi o aumentare Limite di velocità Nella sezione Impostazioni API → Impostazioni predefinite del tuo piano. |
| 429 | API_DATA_REALM_ESAURITO | Il traffico dati mensile del proprietario è esaurito. Si azzera con il mese di fatturazione successivo; effettua l'upgrade per averne di più. |
| 503 | API_AGENT_NON_CONNESSO | L'agente associato al tuo database Supabase è offline. Verificalo in Dati → Agenti dati; le chiamate riprenderanno a funzionare non appena verrà ristabilita la connessione. |
| 504 | API_QUERY_TIMEOUT | L'esecuzione della query ha richiesto più di 60 secondi. Aggiungi un filtro o un indice, oppure salva una query più specifica. |
Ogni corpo di errore ha la forma {"errore": {"codice": "…", "messaggio": "…"}} e ogni risposta porta con sé un X-QS-Request-Id Intestazione. Citare l'ID quando si scrive all'assistenza.
Domande che le persone si pongono
I miei dati vengono copiati in Query Streams?
No. L'agente esegue la query nella posizione in cui si trovano i dati e invia solo le righe richieste dalla chiamata. Nulla viene sincronizzato o memorizzato nella cache; ogni chiamata esegue la query.
I chiamanti possono modificare la query SQL o richiedere altre tabelle?
No. Un endpoint esegue una query salvata. I chiamanti possono impostare solo i parametri che hai contrassegnato. Chiamabilee i valori sono associati in modo sicuro: il testo è racchiuso tra virgolette e preceduto da un carattere di escape, i numeri sono controllati per intervallo e gli elenchi sono espansi.
Come faccio a consegnarlo a un collega?
Sul punto finale Condivisione scheda scegli Persone e inserire la loro email. Ricevono un link magico, accedono con quell'indirizzo (un account gratuito va bene) e creano la propria chiave; vedrai le loro chiamate per nome nella scheda Attività. Per un server o uno strumento di automazione, crea un Chiave API con un'etichetta invece.
Cosa succede quando modifico la query salvata?
L'endpoint esegue il nuovo SQL alla chiamata successiva e la sua specifica OpenAPI viene rigenerata. L'URL e le chiavi non cambiano. Se aggiungi o rimuovi un filtro, rivisita Parametri di blocco in modo che chi chiama veda i parametri corretti.
Il piano gratuito copre davvero tutto questo?
Sì. Il piano gratuito è un piano che mantieni, non una prova che scade. Include un endpoint, due chiavi e 250 righe per chiamata. Scopri esattamente cosa include su pagina dei prezzi.
L'endpoint supporta il dialetto SQL di Supabase?
Sì, perché la query SQL è tua. L'hai scritta e eseguita sul tuo database Supabase in Query Builder; l'endpoint esegue esattamente la stessa istruzione tramite la stessa connessione, con i valori dei parametri configurati nel modo previsto da Supabase.
Il mio database Supabase deve essere accessibile da Internet?
No. Solo l'agente deve accedervi, da qualsiasi computer sempre acceso con accesso a Internet. L'agente effettua una sola connessione in uscita verso Query Streams; chi chiama comunica con api.querystreams.com e mai con il tuo server.
Guide correlate
Ogni guida per Supabase
Non è proprio la tua configurazione?
- Utilizzi PostgreSQL sul tuo server o computer? Usa la scheda 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?

