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 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 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
POSTdemandes. 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 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 applicables à 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
BodyexpressionsUrl,Headers, et par rapport à l'état actuel de la session. Ces valeurs évaluées constituent la requête HTTP sortante. -
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.