View a markdown version of this page

Solicitação HTTP - 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á.

Solicitação HTTP

Quando usar

Use HTTP_REQUEST quando sua função precisar chamar um serviço externo. 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 — A URL para a 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. Os 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 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. Processar 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 ao estado original da sessão e ao response objeto retornado pela chamada.

Campos de resposta

Depois que a chamada HTTP for concluída, você poderá fazer referência aos seguintes campos em suas expressões de saída:

Campo Tipo Description
response.body Objeto ou matriz O corpo da resposta é analisado como JSON. Definido 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. Definido como null sem falha de rede.
response.text String O corpo bruto da resposta como uma string, truncada para 20.000 caracteres. Definido como "Internal Error" sem falha de rede.
Importante

O response.body campo é null quando a resposta excede 20.000 caracteres, mesmo se a resposta for um JSON válido.

nota

O objeto de resposta está disponível somente no bloco 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 comonull, e response.text estiver definida como. "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