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

À utiliser HTTP_REQUEST 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 résolution, la récupération de segments d'audience à partir d'une plateforme de gestion de données et l'envoi d'informations de session à un terminal 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 génère l'URL de manière dynamique.

  • En-têtes : en-têtes HTTP à inclure dans la demande, spécifiés sous forme de paires nom d'en-tête et 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.

  • Corps  : corps de la demande à envoyer. Utilisé pour les POST demandes. Vous pouvez utiliser une expression JSonata pour construire 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 associe 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 qui s'appliquent à 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 expressions UrlHeaders, et par rapport à l'état actuel de la session. Ces valeurs évaluées constituent la requête HTTP sortante.

  2. Traiter 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églez null sur en cas de défaillance du réseau.
response.text Chaîne Le corps brut de la réponse sous forme de chaîne, tronqué à 20 000 caractères. Réglez "Internal Error" sur en cas de défaillance du réseau.
Important

Ce response.body champ est utilisé 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 est disponible uniquement 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, en-têtes ou corps. 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 des défaillances 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 vous response.body êtes défini surnull, et response.text est défini sur. "Internal Error" Vos expressions de sortie s'exécutent toujours. Vérifiez donc toujours response.statusCode avant d'utiliser les 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 les 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 répondre aux exigences du 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, consultezExemples de fonctions.