View a markdown version of this page

HTTP-Anfrage - AWS Elemental MediaTailor

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-Anfrage

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 einJSONATA.

  • MethodType— Die HTTP-Methode. Unterstützte Werte sind GET und POST.

  • 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-Name- und Wertepaare. Verwenden Sie die {%...%} Ausdruckssyntax für dynamische Header-Werte. Statische Werte können direkt als Zeichenketten angegeben werden.

  • Text — Der zu sendende Anforderungstext. Wird bei POST Anfragen verwendet. Sie können einen JSONata-Ausdruck verwenden, um den Körper dynamisch zu erstellen.

  • RequestTimeoutMilliseconds(erforderlich) — Wie lange soll 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 das response Objekt 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:

  1. Anfrage erstellen — MediaTailor wertet die Body Ausdrücke UrlHeaders, und anhand des aktuellen Sitzungsstatus aus. Diese ausgewerteten Werte bilden die ausgehende HTTP-Anfrage.

  2. Die Antwort verarbeiten — MediaTailor Wertet nach Abschluss des HTTP-Aufrufs die Ausdrücke im Ausgabeblock aus. Diese Ausdrücke können sowohl auf den ursprünglichen Sitzungsstatus als auch auf das vom Aufruf zurückgegebene response Objekt verweisen.

Antwortfelder

Nach Abschluss des HTTP-Aufrufs können Sie in Ihren Output-Ausdrücken auf die folgenden Felder verweisen:

Feld Typ Description
response.body Objekt oder Array Der als JSON geparste Antworttext. nullWird auf gesetzt, wenn der Text 20.000 Zeichen überschreitet oder kein gültiges JSON ist.
response.statusCode Ganzzahl Der vom externen Dienst zurückgegebene HTTP-Statuscode. Bei Netzwerkausfall null auf 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 angezeigtnull, wenn die Antwort 20.000 Zeichen überschreitet, auch wenn es sich bei der Antwort um eine gültige JSON-Antwort handelt.

Anmerkung

Das Antwortobjekt ist nur im Output-Block 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.

Der 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 response.body auf null gesetzt response.text ist und auf "Internal Error" gesetzt ist. Ihre Ausgabeausdrücke werden immer noch 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.