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 sur
JSONATA. -
MethodType— La méthode HTTP. Les valeurs prises en charge sont
GETetPOST. -
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
POSTdemandes. 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 que
player_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 :
-
Génère la demande : MediaTailor évalue les
BodyexpressionsUrlHeaders, et par rapport à l'état actuel de la session. Ces valeurs évaluées constituent la requête HTTP sortante. -
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.