View a markdown version of this page

REQUÊTE_HTTP - AWS Elemental MediaTailor

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

REQUÊTE_HTTP

Quand l’utiliser

HTTP_REQUESTÀ utiliser lorsque votre fonction doit appeler un service externe. Les cas d'utilisation courants incluent la récupération de données d'identité auprès d'un fournisseur de solutions, la récupération de segments d'audience à partir d'une plateforme de gestion des données et l'envoi d'informations de session à un point de terminaison de journalisation.

Champs de configuration

Une HTTP_REQUEST fonction comporte les champs suivants :

  • Runtime — Langage d'expression. Réglez ce paramètre surJSONATA.

  • MethodType— La méthode HTTP. Les valeurs prises en charge sont GET et POST.

  • Url — URL à laquelle envoyer la demande. Vous pouvez utiliser une URL statique ou une expression JSonata qui crée l'URL de manière dynamique.

  • En-têtes : en-têtes HTTP à inclure dans la demande, spécifiés sous forme de paires de nom d'en-tête et de valeur. Utilisez la syntaxe des {%...%} expressions pour les valeurs d'en-tête dynamiques. Les valeurs statiques peuvent être spécifiées directement sous forme de chaînes.

  • Body — Le corps de la demande à envoyer. Utilisé avec les POST demandes. Vous pouvez utiliser une expression JSonata pour créer le corps de manière dynamique.

  • RequestTimeoutMilliseconds(obligatoire) — Combien de temps faut-il attendre pour obtenir une réponse.

  • Sortie — Définit les valeurs à produire une fois l'appel HTTP terminé. Chaque entrée fait correspondre une clé de sortie (telle queplayer_params.envelope_id) à une expression qui peut faire référence à l'responseobjet.

Pour connaître les limites de taille et les restrictions applicables à ces champs, consultezRestrictions.

Comment la demande est traitée

MediaTailor traite une HTTP_REQUEST fonction en deux étapes :

  1. Génère la demande : MediaTailor évalue les Body expressionsUrl,Headers, et par rapport à l'état actuel de la session. Ces valeurs évaluées constituent la requête HTTP sortante.

  2. Traitement de la réponse : une fois l'appel HTTP terminé, MediaTailor évalue les expressions du bloc de sortie. Ces expressions peuvent faire référence à la fois à l'état de session d'origine et à l'responseobjet renvoyé par l'appel.

Champs de réponse

Une fois l'appel HTTP terminé, vous pouvez référencer les champs suivants dans vos expressions de sortie :

Champ Type Description
response.body Objet ou tableau Le corps de la réponse est analysé au format JSON. Défini sur null si le corps dépasse 20 000 caractères ou s'il ne s'agit pas d'un JSON valide.
response.statusCode Entier Code d'état HTTP renvoyé par le service externe. Réglé null sur en cas de défaillance du réseau.
response.text String Le corps de réponse brut sous forme de chaîne, tronqué à 20 000 caractères. Réglé "Internal Error" sur en cas de défaillance du réseau.
Important

Le response.body champ est indiqué null lorsque la réponse dépasse 20 000 caractères, même si la réponse est un JSON valide.

Note

L'objet de réponse n'est disponible que dans le bloc de sortie d'une HTTP_REQUEST fonction. Vous ne pouvez pas référencer les champs de réponse dans les champs Url, Headers ou Body. Dans aSEQUENTIAL_EXECUTOR, chaque HTTP_REQUEST fonction ne peut accéder qu'à sa propre réponse.

La valeur de null signifie que les données ne sont pas disponibles. Cela se produit lorsque l'appel HTTP échoue (erreur réseau ou délai d'attente) ou lorsque le corps de la réponse dépasse 20 000 caractères ou n'est pas un JSON valide.

Comportement de défaillance du réseau

Si l'appel HTTP échoue en raison d'une erreur réseau ou d'un délai d'attente, response.statusCode et si les paramètres response.body null response.text sont définis sur et sur. "Internal Error" Vos expressions de sortie s'exécutent toujours. Vérifiez donc toujours response.statusCode avant d'utiliser des données de réponse.

Astuce

Utilisez une expression conditionnelle pour gérer les échecs avec élégance : {%response.statusCode = 200 ? response.body.value : 'default'%}

Exemple : récupérer des données d'identité

La fonction suivante appelle une API de résolution d'identité au début de la session et enregistre le résultat dans les paramètres du joueur. Il est conçu pour le PRE_SESSION_INITIALIZATION cycle de vie.

{ "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 : ''%}" } } }

Pour une présentation complète d'un exemple similaire, voirExemples de fonctions.