GraphQL
Una Source di tipo GraphQL in Flowlyze è un job di ingresso schedulato che, in base alla pianificazione del flusso (es. cron), chiama un endpoint GraphQL, invia la richiesta (query o mutation) e mette in coda il payload di risposta per l'elaborazione. Estende il comportamento delle sorgenti HTTP e utilizza le impostazioni GraphQL del flusso per costruire la richiesta, inviarla e interpretare la risposta.
Consente di eseguire operazioni GraphQL verso endpoint accessibili via HTTP: il client specifica i dati desiderati e il server risponde con una struttura JSON che rispecchia la richiesta. Il trasporto tipico è HTTP (di solito POST) con body JSON.
Configurazione
| Proprietà | Descrizione |
|---|---|
| Url | URL completo dell'endpoint GraphQL (es. https://api.example.com/graphql). Non può essere vuoto. |
| Method | Metodo HTTP: GET o POST. |
| Query | Stringa della query (o mutation) GraphQL. Non può essere vuota. |
| Variables | Stringa JSON per le variabili della query. |
| OperationName | Nome dell'operazione quando il documento contiene più operazioni. |
| Headers | Header HTTP aggiunti alla richiesta (es. Authorization, X-Custom-Header). |
| HttpRequestAuthSettings | Configurazione auth (es. bearer token, API key). |
| DataField | JSON path per il campo "data" nella risposta GraphQL (JSONPath). Usato per estrarre il payload da mettere in coda. |
| ErrorsField | JSON path per l'array "errors" nella risposta. Se presente e non vuoto, il job solleva un'eccezione con i messaggi di errore. |
Gestione della risposta
La risposta di un endpoint GraphQL è in genere in formato JSON.
- Errori HTTP: se lo status HTTP non è 2xx (es. 400, 401, 403, 429, 500), la richiesta è considerata fallita e viene sollevata un'eccezione (status, body e messaggio di errore).
- Errori GraphQL: il job legge il token indicato da ErrorsField (default
"errors"). Se è un array non vuoto, raccoglie il messaggio di ogni elemento e solleva:"Error in GraphQL: {messages}". - Extensions: se la root ha un token
extensions, viene registrato a livello informativo (es. rate limit, costi query). - Estrazione dati: il token indicato da DataField (default
"data") viene usato per costruire l'elenco di messaggi:- Array: ogni elemento (come JObject) viene messo in coda come un messaggio.
- Oggetto: un solo JObject messo in coda come un messaggio.
Autenticazione
L'autenticazione è gestita come per la Source HTTP: Bearer token, API key, Basic Auth, OAuth2, JWT, ecc. (vedi sezione Http per le modalità supportate).