Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Richiesta HTTP
Quando utilizzarlo
Da utilizzare HTTP_REQUEST quando la funzione deve chiamare un servizio esterno. I casi d'uso più comuni includono il recupero dei dati di identità da un fornitore di soluzioni, il recupero di segmenti di pubblico da una piattaforma di gestione dei dati e l'invio di informazioni sulla sessione a un endpoint di registrazione.
Campi di configurazione
Una HTTP_REQUEST funzione ha i seguenti campi:
-
Runtime: il linguaggio delle espressioni. Impostalo su
JSONATA. -
MethodType— Il metodo HTTP. I valori supportati sono
GETePOST. -
Url: l'URL a cui inviare la richiesta. È possibile utilizzare un URL statico o un'espressione JSonata che crea l'URL in modo dinamico.
-
Intestazioni: le intestazioni HTTP da includere nella richiesta, specificate come coppie di nome e valore dell'intestazione. Usa la sintassi delle
{%...%}espressioni per i valori di intestazione dinamici. I valori statici possono essere specificati direttamente come stringhe. -
Corpo: il corpo della richiesta da inviare. Utilizzato con
POSTle richieste. È possibile utilizzare un'espressione JSonata per creare il corpo in modo dinamico. -
RequestTimeoutMilliseconds(obbligatorio) — Quanto tempo aspettare per una risposta.
-
Output: definisce i valori da produrre dopo il completamento della chiamata HTTP. Ogni voce associa una chiave di output (ad esempio
player_params.envelope_id) a un'espressione che può fare riferimento all'responseoggetto.
Per i limiti e le restrizioni di dimensione applicabili a questi campi, consultaLimits.
Come viene elaborata la richiesta
MediaTailor elabora una HTTP_REQUEST funzione in due fasi:
-
Crea la richiesta: MediaTailor valuta le
BodyespressioniUrlHeaders, e rispetto allo stato corrente della sessione. Questi valori valutati costituiscono la richiesta HTTP in uscita. -
Elabora la risposta: al termine della chiamata HTTP, MediaTailor valuta le espressioni nel blocco di output. Queste espressioni possono fare riferimento sia allo stato della sessione originale che all'
responseoggetto restituito dalla chiamata.
Campi di risposta
Al termine della chiamata HTTP, puoi fare riferimento ai seguenti campi nelle tue espressioni di output:
| Campo | Tipo | Description |
|---|---|---|
response.body |
Oggetto o matrice | Il corpo della risposta analizzato come JSON. Impostato su null se il corpo supera i 20.000 caratteri o non è un JSON valido. |
response.statusCode |
Numero intero | Il codice di stato HTTP restituito dal servizio esterno. Impostato null su in caso di errore di rete. |
response.text |
Stringa | Il corpo della risposta non elaborato come stringa, troncato a 20.000 caratteri. Impostato su un errore di rete. "Internal Error" |
Importante
Il response.body campo è null quando la risposta supera i 20.000 caratteri, anche se la risposta è un JSON valido.
Nota
L'oggetto risposta è disponibile solo nel blocco Output di una funzione. HTTP_REQUEST Non è possibile fare riferimento ai campi di risposta nei campi Url, Headers o Body. In aSEQUENTIAL_EXECUTOR, ogni HTTP_REQUEST funzione può accedere solo alla propria risposta.
Un valore di null indica che i dati non sono disponibili. Ciò si verifica quando la chiamata HTTP fallisce (errore di rete o timeout) o quando il corpo della risposta supera i 20.000 caratteri o non è un JSON valido.
Comportamento di errore di rete
Se la chiamata HTTP non riesce a causa di un errore di rete o di un timeout response.statusCode e response.body sono impostate su e response.text sono impostate su. null "Internal
Error" Le espressioni di output sono ancora in esecuzione, quindi controllate sempre response.statusCode prima di utilizzare i dati di risposta.
Suggerimento
Usa un'espressione condizionale per gestire gli errori con garbo: {%response.statusCode = 200 ? response.body.value :
'default'%}
Esempio: recupero dei dati di identità
La seguente funzione chiama un'API per la risoluzione delle identità all'inizio della sessione e memorizza il risultato nei parametri del giocatore. È progettato per il PRE_SESSION_INITIALIZATION ciclo di vita.
{ "FunctionId": "fetchIdentityEnvelope", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity.example.com/v1/resolve?ip=' & $encodeUrlComponent(session.client_ip)%}", "Headers": { "Authorization": "{%'Bearer my_api_token'%}", "Accept": "application/json" }, "RequestTimeoutMilliseconds": 2000, "Output": { "player_params.identity_envelope": "{%response.statusCode = 200 ? response.body.envelope : ''%}" } } }
Per una panoramica completa di un esempio simile, vedi. Esempi di funzioni