Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
HTTP_REQUEST
Wann sollte dies verwendet werden?
HTTP_REQUESTWird verwendet, wenn Ihre Funktion einen externen Dienst aufrufen muss. Zu den häufigsten Anwendungsfällen gehören das Abrufen von Identitätsdaten von einem Lösungsanbieter, das Abrufen von Zielgruppensegmenten von einer Datenverwaltungsplattform und das Senden von Sitzungsinformationen an einen Protokollierungsendpunkt.
Felder für die Konfiguration
Eine HTTP_REQUEST Funktion hat die folgenden Felder:
-
Runtime — Die Ausdruckssprache. Stellen Sie dies auf ein
JSONATA. -
MethodType— Die HTTP-Methode. Unterstützte Werte sind
GETundPOST. -
Url — Die URL, an die die Anfrage gesendet werden soll. Sie können eine statische URL oder einen JSONata-Ausdruck verwenden, der die URL dynamisch erstellt.
-
Header — Die HTTP-Header, die in die Anfrage aufgenommen werden sollen, angegeben als Header-Namen- und Wertepaare. Verwenden Sie die
{%...%}Ausdruckssyntax für dynamische Header-Werte. Statische Werte können direkt als Zeichenketten angegeben werden. -
Body — Der Hauptteil der Anfrage, der gesendet werden soll. Wird bei
POSTAnfragen verwendet. Sie können einen JSONata-Ausdruck verwenden, um den Körper dynamisch zu erstellen. -
RequestTimeoutMilliseconds(erforderlich) — Wie lange muss auf eine Antwort gewartet werden?
-
Ausgabe — Definiert die Werte, die nach Abschluss des HTTP-Aufrufs erzeugt werden sollen. Jeder Eintrag ordnet einen Ausgabeschlüssel (z. B.
player_params.envelope_id) einem Ausdruck zu, der auf dasresponseObjekt verweisen kann.
Informationen zu Größenbeschränkungen und Einschränkungen, die für diese Felder gelten, finden Sie unterEinschränkungen.
Wie wird die Anfrage bearbeitet
MediaTailor verarbeitet eine HTTP_REQUEST Funktion in zwei Schritten:
-
Erstellen Sie die Anforderung — MediaTailor wertet die
BodyAusdrückeUrlHeaders, und anhand des aktuellen Sitzungsstatus aus. Diese ausgewerteten Werte bilden die ausgehende HTTP-Anfrage. -
Die Antwort verarbeiten — Nach Abschluss des HTTP-Aufrufs werden die Ausdrücke im Ausgabeblock MediaTailor ausgewertet. Diese Ausdrücke können sowohl auf den ursprünglichen Sitzungsstatus als auch auf das vom Aufruf zurückgegebene
responseObjekt verweisen.
Antwortfelder
Nach Abschluss des HTTP-Aufrufs können Sie in Ihren Ausgabeausdrücken auf die folgenden Felder verweisen:
| Feld | Typ | Description |
|---|---|---|
response.body |
Objekt oder Array | Der Antworttext wurde als JSON analysiert. nullWird auf gesetzt, wenn der Hauptteil mehr als 20.000 Zeichen enthält oder kein gültiges JSON ist. |
response.statusCode |
Ganzzahl | Der vom externen Dienst zurückgegebene HTTP-Statuscode. nullAuf „Bei Netzwerkausfall“ gesetzt. |
response.text |
Zeichenfolge | Der unformatierte Antworttext als Zeichenfolge, gekürzt auf 20.000 Zeichen. "Internal Error"Auf „Bei Netzwerkausfall“ gesetzt. |
Wichtig
Das response.body Feld wird verwendetnull, wenn die Antwort 20.000 Zeichen überschreitet, auch wenn es sich bei der Antwort um ein gültiges JSON handelt.
Anmerkung
Das Antwortobjekt ist nur im Ausgabeblock einer HTTP_REQUEST Funktion verfügbar. Sie können in den Feldern Url, Headers oder Body nicht auf Antwortfelder verweisen. In a SEQUENTIAL_EXECUTOR kann jede HTTP_REQUEST Funktion nur auf ihre eigene Antwort zugreifen.
Ein Wert von null bedeutet, dass die Daten nicht verfügbar sind. Dies passiert, wenn der HTTP-Aufruf fehlschlägt (Netzwerkfehler oder Timeout) oder wenn der Antworttext 20.000 Zeichen überschreitet oder kein gültiges JSON ist.
Verhalten bei Netzwerkausfällen
Wenn der HTTP-Aufruf aufgrund eines Netzwerkfehlers oder einer Zeitüberschreitung fehlschlägt response.statusCode und auf null eingestellt response.body sind und auf response.text "Internal
Error" gesetzt sind. Ihre Ausgabeausdrücke werden weiterhin ausgeführt. Überprüfen Sie dies daher immer, response.statusCode bevor Sie Antwortdaten verwenden.
Tipp
Verwenden Sie einen bedingten Ausdruck, um Fehler ordnungsgemäß zu behandeln: {%response.statusCode = 200 ? response.body.value :
'default'%}
Beispiel: Identitätsdaten abrufen
Die folgende Funktion ruft zu Beginn der Sitzung eine API zur Identitätsauflösung auf und speichert das Ergebnis in Player-Parametern. Sie ist für den PRE_SESSION_INITIALIZATION Lifecycle-Hook konzipiert.
{ "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 : ''%}" } } }
Eine vollständige exemplarische Vorgehensweise für ein ähnliches Beispiel finden Sie unterBeispiele für Funktionen.