HTTP Request

action_http · action · HTTP & Webhook · Disponibile · v3.0.0

Descrizione

Esegue una richiesta HTTP/HTTPS verso API esterne. Coltellino svizzero per qualunque integrazione vendor non gia\` coperta da un nodo dedicato (action_send_email, community_*, integration_*). Differenza con i sibling: action_http = REST/RPC generico full-feature (auth multipla, body 5 forme, pagination 4 strategie, retry/breaker). Per scraping HTML usa action_web_fetch_advanced (header browser preset, cookie jar, anti-bot light). Per orchestrazione adaptive con AI extract usa action_scrape_smart (fetch→render→stealth→vision pipeline). Auth supportata: Basic (user:pass base64), Bearer (token in header), API Key (header custom), Custom (header arbitrari), OAuth2 client_credentials (il nodo ottiene da sé l\`access-token dal token endpoint e lo inietta come Bearer, con cache fino a scadenza). Per il flow OAuth2 authorization_code (a 3 gambe, con redirect utente) usa un nodo integration dedicato. Body: JSON serializzato (con merge di key-value editor), Form url-encoded, Multipart (file upload + campi misti), Raw-text (string custom Content-Type), Raw-binary (base64), Binary (handle da nodo upstream). Pagination automatica con 4 strategie: page-number (?page=N), offset/limit (?offset=N&limit=M), cursor opaco (?cursor=X from response), Link header RFC 5988 (Link: <url>; rel="next"). Walker bounded — maxPages cap protegge da loop infiniti se il vendor implementa Link male. Resilienza enterprise: retry con backoff configurabile (count + delay base + jitter exponential), follow redirects con limit, response format selezionabile (auto-detect via Content-Type / json / text / binary base64), timeout per-request. Wrap automatico con circuit breaker per-host (shared con tutti i nodi che colpiscono lo stesso host — se il vendor e\` giu\`, tutti i workflow si fermano insieme prima di accumulare timeout). Telemetry OpenTelemetry: span per request con method/host/status/duration per dashboard SRE. Use case: (1) chiamata API vendor non coperto da community_* (es. ERP italiano custom), (2) integrazione SaaS interno con auth Bearer + retry idempotente, (3) sync periodico catalogo prodotti con pagination cursor su API REST esterna, (4) webhook outbound notify verso CRM partner con telemetry SLA per audit. Safety budget: SSRF guard via safeOutboundFetch (blocca 127.0.0.1, 10.x/172.16.x/192.168.x, link-local), max response size 50 MB (override per-call), timeout default 30s, retry max 5 attempts, circuit breaker apre su 5 fail consecutivi/30s. Audit log su ogni call con request_id + duration.

⚙️ Parametri di configurazione

Campi mostrati nell’editor quando si configura il nodo. Generati direttamente dal NodeDefconfigFields.

CampoTipoRequiredDefaultDescrizione
method
Metodo HTTP
enum
GETPOSTPUTPATCHDELETEHEADOPTIONS
siGETGET=leggi · POST=crea · PUT/PATCH=aggiorna · DELETE=cancella · HEAD=solo headers · OPTIONS=preflight CORS.
url
URL
stringsi
https://api.example.com/v1/users/{{input.id}}
URL completo (http o https). Supporta {{espressioni}} per pezzi dinamici.
authMode
Autenticazione
enum
nonebasicbearerapikey-headercustomoauth2
nononenone = nessuna (o gestita via Headers). basic = HTTP Basic (user+password → Base64). bearer = "Authorization: Bearer <token>" (JWT, OAuth access tokens). apikey-header = header custom con il valore (X-API-Key, X-Auth-Token, ecc). custom = nome+valore header completamente liberi. oauth2 = OAuth2 client_credentials (machine-to-machine): il nodo richiede da sé l'access-token al token endpoint e lo inietta come Bearer (token cachato fino a scadenza).
basicUser
Username (Basic)
stringno
basicPass
Password (Basic)
string (encrypted)no
bearerToken
Token Bearer
string (encrypted)noIl token segreto da mettere dopo "Bearer ".
apiKeyHeaderName
Nome header API Key
stringnoX-API-Key
X-API-Key oppure X-Auth-Token
apiKeyValue
Valore API Key
string (encrypted)no
customAuthHeaderName
Nome header custom
stringnoAuthorization
customAuthHeaderValue
Valore header custom
string (encrypted)no
oauth2TokenUrl
Token endpoint URL
stringno
https://login.example.com/oauth2/token
URL del token endpoint OAuth2 (grant client_credentials).
oauth2ClientId
Client ID
stringno
oauth2ClientSecret
Client secret
string (encrypted)no
oauth2Scope
Scope (opzionale)
stringno
read:data write:data
Scope OAuth2 separati da spazio. Vuoto = nessuno scope richiesto.
oauth2AuthStyle
Invio credenziali client
enum
headerbody
noheaderheader = HTTP Basic sul token endpoint (default, RFC 6749). body = client_id/secret nel form.
queryParamsJson
Query Parameters
key-valuenoAggiunti all'URL come ?key=value&... Supportano {{espressioni}}.
headersJson
Headers HTTP extra
key-valuenoCoppie nome-valore extra (Authorization e Content-Type sono gestiti automaticamente).
bodyType
Tipo body
enum
nonejsonform-urlencodedmultipartraw-textraw-binary-base64binary
nojsonnone = nessun body (GET/HEAD/DELETE tipicamente). json = JSON (Content-Type application/json). form-urlencoded = form classico (key=value&...). multipart = form-data con file/binary support. raw-text = testo grezzo (per XML, YAML, custom). raw-binary-base64 = bytes binari (body in base64, viene decodificato). binary = UPLOAD ref-primario: il body sono i byte di un handle BinaryData in INPUT (da Read File / http download / pdf / imap); Content-Type dal mimeType dell'handle.
body
Body (JSON o testo)
codeno
{ "key": "{{input.value}}" }
Per json: JSON. Per raw-text: testo libero. Per raw-binary-base64: stringa base64.
rawBinaryContentType
Content-Type del binario
enum
application/octet-streamapplication/pdfimage/pngimage/jpegapplication/zip
noapplication/octet-stream
formFields
Form fields (key-value)
key-valuenoCoppie nome-valore del form. Per multipart con file: il valore puo` essere base64.
paginationMode
Pagination
enum
nonepage-numberoffset-limitcursorlink-header
nononenone = singola chiamata. page-number = ?page=1&limit=N, ?page=2&limit=N, ... (stop quando items < limit). offset-limit = ?offset=0&limit=N, ?offset=N&limit=N, ... cursor = leggi next_cursor dalla risposta, passa come ?cursor=... link-header = segui Link: <url>; rel="next" (GitHub, Mastodon).
paginationMaxPages
Max pagine
numberno10Limite di sicurezza — interrompe il loop anche se ci sono altre pagine.
paginationPageSize
Items per pagina (limit)
numberno50
paginationItemsField
Campo array nella risposta
stringno
es. data, items, results
Se valorizzato, concatena response[campo]. Se vuoto, concatena l'intera response.
paginationPageParam
Nome parametro pagina
stringnopage
paginationStartPage
Pagina iniziale
numberno1
paginationLimitParam
Nome parametro limit
stringnolimit
paginationOffsetParam
Nome parametro offset
stringnooffset
paginationStartOffset
Offset iniziale
numberno0
paginationCursorParam
Nome parametro cursor
stringnocursor
paginationCursorField
Campo next cursor nella risposta
stringnonext_cursorEs. next_cursor, nextPage, paging.next.cursor
retryStrategy
Chi gestisce il retry
enum
autonodeworkflownone
noautoUN SOLO livello di retry (mai annidato). auto (default) = questo nodo HTTP ritenta internamente (consigliato: conosce retryOnStatus + Retry-After). node = come auto, esplicito. workflow = NON ritenta il nodo; lascia il retry al motore del workflow (retry generico per categoria d'errore). none = nessun retry.
retryCount
Numero retry
numberno0Quante volte ritentare in caso di errore (5xx o codici configurati). 0 = no retry. Ignorato se "Chi gestisce il retry" = workflow/none.
retryInitialDelayMs
Delay iniziale (ms)
numberno500Pausa prima del primo retry. Si moltiplica per il fattore ad ogni tentativo.
retryBackoffFactor
Fattore backoff esponenziale
numberno22 = raddoppia ogni retry (500ms, 1000ms, 2000ms, ...). 1 = delay costante.
retryOnStatus
Status da ritentare (csv)
stringno429,500,502,503,504
429,500,502,503,504
Codici HTTP che fanno scattare il retry. Errori di network/timeout sono sempre ritentati.
responseFormat
Formato risposta
enum
autojsontextbinary
noautoauto = sniff dal Content-Type (default; octet-stream → handle binary). json = parse forzato (errore se non valido). text = stringa raw. binary = download come HANDLE BinaryData (ref content-addressed su disco): i byte NON entrano nel JSON → per PDF/immagini/file, anche grandi. Si collega a Write File / email / pdf / excel che consumano BinaryData (senza store: inline base64, fail-soft).
followRedirects
Segui redirect
booleannotrueSe on: segue 3xx automaticamente. Se off: restituisce status 3xx e header Location.
allowSelfSigned
Accetta certificati self-signed
booleannofalseOnorato SOLO verso host nella allowlist interna del tuo workspace (autorizzata da Zeli). Verso host pubblici resta IGNORATO e la verifica TLS è SEMPRE attiva (anti-MITM). Hai un endpoint interno con cert self-signed (es. ERP aziendale)? Richiedi l'abilitazione dell'host via email a [email protected]: lo aggiungiamo alla tua allowlist e questo flag diventa attivo per quell'host.
statusCodeOnly
Solo status code (ignora body)
booleannofalseSe on: scarta il body, restituisce solo status+headers (piu` veloce per ping/healthcheck).
timeoutMs
Timeout (millisecondi)
numberno30000Default 30s. Aumenta per API lente (es. report generation).
maxResponseMb
Max risposta (MB)
numberno50Cap dimensione risposta (anti-OOM). Default 50 MB, max 500. Se superato (via content-length o in streaming) il nodo si ferma con errore invece di saturare la memoria.
throwOnError
Errore su status 4xx/5xx
booleannotrueSe on, lo step fallisce su errore HTTP non-recuperato dal retry.

💡 Esempio configurazione

Snippet JSON del nodo come compare nel workflow. I valori sono derivati daidefaultValue e dai parametri required.

{
  "id": "node-action_http-1",
  "defId": "action_http",
  "label": "HTTP Request",
  "config": {
    "method": "GET",
    "url": "https://api.example.com/v1/users/{{input.id}}",
    "authMode": "none",
    "apiKeyHeaderName": "X-API-Key",
    "customAuthHeaderName": "Authorization",
    "oauth2AuthStyle": "header",
    "bodyType": "json",
    "rawBinaryContentType": "application/octet-stream",
    "paginationMode": "none",
    "paginationMaxPages": 10,
    "paginationPageSize": 50,
    "paginationPageParam": "page",
    "paginationStartPage": 1,
    "paginationLimitParam": "limit",
    "paginationOffsetParam": "offset",
    "paginationStartOffset": 0,
    "paginationCursorParam": "cursor",
    "paginationCursorField": "next_cursor",
    "retryStrategy": "auto",
    "retryCount": 0,
    "retryInitialDelayMs": 500,
    "retryBackoffFactor": 2,
    "retryOnStatus": "429,500,502,503,504",
    "responseFormat": "auto",
    "followRedirects": true,
    "allowSelfSigned": false,
    "statusCodeOnly": false,
    "timeoutMs": 30000,
    "maxResponseMb": 50,
    "throwOnError": true
  }
}

🔗 Nodi correlati nella stessa categoria

Pronto a usare HTTP Request?

Disponibile da subito in tutti i piani FlowForge. Provalo gratis senza carta di credito.

Inizia gratisSfoglia tutti i nodi