View a markdown version of this page

HTTP_REQUEST - AWS Elemental MediaTailor

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 comoJSONATA.

  • MethodType— O método HTTP. Os valores compatíveis são GET e POST.

  • 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 POST solicitaçõ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 (comoplayer_params.envelope_id) para uma expressão que pode referenciar o response objeto.

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:

  1. Crie a solicitação — MediaTailor avalia as Body expressõesUrl,Headers, e em relação ao estado atual da sessão. Esses valores avaliados formam a solicitação HTTP de saída.

  2. 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 response objeto 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