As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
HTTP_REQUEST
Quando usar
Use HTTP_REQUEST quando sua função precisar chamar um serviço externo. Os casos de uso comuns incluem a busca de dados de identidade de um provedor de resolução, a recuperação de segmentos de público de uma plataforma de gerenciamento de dados e o envio de informações da sessão para um endpoint de registro.
Campos de configuração
Uma HTTP_REQUEST função tem os seguintes campos:
-
Runtime — A linguagem de expressão. Defina isso como
JSONATA. -
MethodType— O método HTTP. Os valores compatíveis são
GETePOST. -
Url — O URL para o qual enviar a solicitação. Você pode usar uma URL estática ou uma expressão JSONATA que cria a URL dinamicamente.
-
Cabeçalhos — Os cabeçalhos HTTP a serem incluídos na solicitação, especificados como pares de nome e valor do cabeçalho. Use a sintaxe de
{%...%}expressão para valores de cabeçalho dinâmicos. Valores estáticos podem ser especificados diretamente como cadeias de caracteres. -
Corpo — O corpo da solicitação a ser enviada. Usado com
POSTsolicitações. Você pode usar uma expressão JSonata para criar o corpo dinamicamente. -
RequestTimeoutMilliseconds(obrigatório) — Quanto tempo esperar por uma resposta.
-
Saída — Define os valores a serem produzidos após a conclusão da chamada HTTP. Cada entrada mapeia uma chave de saída (como
player_params.envelope_id) para uma expressão que pode referenciar oresponseobjeto.
Para ver os limites e restrições de tamanho que se aplicam a esses campos, consulteLimites.
Como a solicitação é processada
MediaTailor processa uma HTTP_REQUEST função em duas etapas:
-
Crie a solicitação — MediaTailor avalia as
BodyexpressõesUrl,Headers, e em relação ao estado atual da sessão. Esses valores avaliados formam a solicitação HTTP de saída. -
Processe a resposta — Após a conclusão da chamada HTTP, MediaTailor avalia as expressões no bloco de saída. Essas expressões podem fazer referência tanto ao estado original da sessão quanto ao
responseobjeto retornado pela chamada.
Campos de resposta
Depois que a chamada HTTP for concluída, você poderá referenciar os seguintes campos em suas expressões de saída:
| Campo | Tipo | Description |
|---|---|---|
response.body |
Objeto ou matriz | O corpo da resposta foi analisado como JSON. Defina como null se o corpo exceder 20.000 caracteres ou não for um JSON válido. |
response.statusCode |
Inteiro | O código de status HTTP retornado pelo serviço externo. Defina como null em caso de falha de rede. |
response.text |
String | O corpo bruto da resposta como uma string, truncado para 20.000 caracteres. Defina como "Internal Error" em caso de falha de rede. |
Importante
O response.body campo é null quando a resposta excede 20.000 caracteres, mesmo que a resposta seja um JSON válido.
nota
O objeto de resposta está disponível somente no bloco de saída de uma HTTP_REQUEST função. Você não pode referenciar campos de resposta nos campos URL, cabeçalhos ou corpo. Em aSEQUENTIAL_EXECUTOR, cada HTTP_REQUEST função pode acessar somente sua própria resposta.
Um valor de null significa que os dados não estão disponíveis. Isso acontece quando a chamada HTTP falha (erro de rede ou tempo limite) ou quando o corpo da resposta excede 20.000 caracteres ou não é um JSON válido.
Comportamento de falha de rede
Se a chamada HTTP falhar devido a um erro de rede ou tempo limite response.statusCode e response.body estiver definida como e response.text definida como. null "Internal
Error" Suas expressões de saída ainda são executadas, portanto, sempre verifique response.statusCode antes de usar os dados de resposta.
dica
Use uma expressão condicional para lidar com falhas normalmente: {%response.statusCode = 200 ? response.body.value :
'default'%}
Exemplo: buscar dados de identidade
A função a seguir chama uma API de resolução de identidade no início da sessão e armazena o resultado nos parâmetros do player. Ele foi projetado para o gancho do 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 obter uma explicação completa de um exemplo semelhante, consulte. Exemplos de funções