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.
Solicitud HTTP
Cuándo se debe usar
HTTP_REQUESTÚselo cuando su función necesite llamar a un servicio externo. Los casos de uso habituales 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 gestió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 expresiones. Establézcalo en
JSONATA. -
MethodType— El método HTTP. Los valores admitidos son
GETyPOST. -
URL: la URL a la que enviar la solicitud. Puedes usar 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 expresiones para los valores de encabezado 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 hay que 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 actual de la sesión. 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 original de la sesión como al
responseobjeto devuelto por la llamada.
Campos de respuesta
Una vez completada la llamada HTTP, puedes hacer referencia a los siguientes campos en tus expresiones de salida:
| Campo | Tipo | Description (Descripción) |
|---|---|---|
response.body |
Objeto o matriz | El cuerpo de la respuesta se analizó como JSON. nullEstablézcalo si el cuerpo supera los 20 000 caracteres o no es un JSON válido. |
response.statusCode |
Entero | El código de estado HTTP devuelto por el servicio externo. Definido como null si no hubiera error de red. |
response.text |
Cadena | El cuerpo de la respuesta sin procesar en forma de cadena, truncado a 20 000 caracteres. Definido como si no "Internal Error" hubiera error de red. |
importante
El response.body campo aparece 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 ante fallos 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á configurada en y response.text está configurada en. null "Internal
Error" Las expresiones de salida siguen ejecutándose, así que compruébalas 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 identidades 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.
{ "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.