Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
HTTP_REQUEST
Cuándo se debe usar
Úselo HTTP_REQUEST cuando su función necesite llamar a un servicio externo. Los casos de uso más comunes incluyen la obtención de datos de identidad de un proveedor de resolución, la recuperación de segmentos de audiencia de una plataforma de administración de datos y el envío de la información de la sesión a un punto final de registro.
Campos de configuración
Una HTTP_REQUEST función tiene los siguientes campos:
-
Tiempo de ejecución: el lenguaje de expresión. Establézcalo en
JSONATA. -
MethodType— El método HTTP. Los valores admitidos son
GETyPOST. -
Url: la URL a la que se va a enviar la solicitud. Puede utilizar una URL estática o una expresión JSonata que genere la URL de forma dinámica.
-
Encabezados: los encabezados HTTP que se van a incluir en la solicitud, especificados como pares de nombre y valor del encabezado. Utilice
{%...%}la sintaxis de expresión para los valores de los encabezados dinámicos. Los valores estáticos se pueden especificar directamente como cadenas. -
Cuerpo: el cuerpo de la solicitud que se va a enviar. Se usa con
POSTlas solicitudes. Puede usar una expresión JSonata para construir el cuerpo de forma dinámica. -
RequestTimeoutMilliseconds(obligatorio): cuánto tiempo se debe esperar para recibir una respuesta.
-
Salida: define los valores que se generarán una vez finalizada la llamada HTTP. Cada entrada asigna una clave de salida (por ejemplo
player_params.envelope_id) a una expresión que puede hacer referencia alresponseobjeto.
Para conocer los límites y restricciones de tamaño que se aplican a estos campos, consulteLímites.
Cómo se procesa la solicitud
MediaTailor procesa una HTTP_REQUEST función en dos pasos:
-
Crea la solicitud: MediaTailor evalúa las
BodyexpresionesUrlHeaders, y comparándolas con el estado de la sesión actual. Estos valores evaluados forman la solicitud HTTP saliente. -
Procesa la respuesta: una vez finalizada la llamada HTTP, MediaTailor evalúa las expresiones del bloque de salida. Estas expresiones pueden hacer referencia tanto al estado de la sesión original como al
responseobjeto devuelto por la llamada.
Campos de respuesta
Una vez finalizada la llamada HTTP, puede hacer referencia a los siguientes campos en sus expresiones de salida:
| Campo | Tipo | Description (Descripción) |
|---|---|---|
response.body |
Objeto o matriz | El cuerpo de la respuesta se analizó como JSON. Se establece en null si el cuerpo tiene más de 20 000 caracteres o no es un JSON válido. |
response.statusCode |
Entero | El código de estado HTTP devuelto por el servicio externo. Se establece null en caso de fallo de red. |
response.text |
Cadena | El cuerpo de la respuesta sin procesar en forma de cadena, truncado a 20 000 caracteres. Se establece "Internal Error" en caso de fallo de red. |
importante
El response.body campo es null cuando la respuesta supera los 20 000 caracteres, incluso si la respuesta es un JSON válido.
nota
El objeto de respuesta solo está disponible en el bloque de salida de una HTTP_REQUEST función. No puede hacer referencia a los campos de respuesta en los campos URL, encabezados o cuerpo. En aSEQUENTIAL_EXECUTOR, cada HTTP_REQUEST función solo puede acceder a su propia respuesta.
Un valor de null significa que los datos no están disponibles. Esto ocurre cuando la llamada HTTP falla (error de red o tiempo de espera) o cuando el cuerpo de la respuesta supera los 20 000 caracteres o no es un JSON válido.
Comportamiento de fallo de red
Si la llamada HTTP falla debido a un error de red o a un tiempo de espera, response.statusCode y response.body están configurados en y response.text están configurados en. null "Internal
Error" Las expresiones de salida siguen ejecutándose, así que compruébelas siempre response.statusCode antes de usar los datos de respuesta.
sugerencia
Usa una expresión condicional para gestionar los errores correctamente: {%response.statusCode = 200 ? response.body.value :
'default'%}
Ejemplo: obtener datos de identidad
La siguiente función llama a una API de resolución de identidad al inicio de la sesión y almacena el resultado en los parámetros del reproductor. Está diseñada para el PRE_SESSION_INITIALIZATION ciclo de vida útil.
{ "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 : ''%}" } } }
Para ver un recorrido completo de un ejemplo similar, consulteEjemplos de funciones.