Skip to main content

HTTP Listener

O HTTP Listener é um Rush que fica escutando por requisições HTTP em uma determinada URL e, quando recebe uma requisição, executa o handler definido.

Como configurar

Para que seu HTTP Listener funcione, você precisa configurar o parâmetro handler com a lógica que será executada quando o HTTP Listener receber uma requisição HTTP.

Para mais informações sobre os outros parâmetros, consulte a referência do HTTP Listener (em inglês).

Estrutura do payload

Dentro do handler, você consegue acessar usando o componente data2-core-types@Reference os seguintes dados:

  • body: corpo da requisição
  • headers: cabeçalhos da requisição
  • method: método da requisição
  • query: parâmetros da requisição

Por exemplo, se você faz uma requisição POST para seu HTTP Listener com o seguinte corpo:

{
"fruit": "apple"
}

Você consegue acessar esse valor utilizando body.fruit no parâmetro reference do componente data2-core-types@Reference.

Autenticação

Para proteger seu HTTP Listener, você pode colocar políticas no parâmetro policies do HTTP Listener.

Versionamento

Há duas formas de executar um HTTP Listener:

  1. Bater na URL do HTTP Listener.
  2. Chamar o método invoke do HTTP Listener.

Versionamento quando acessado pela URL

Para este caso, a versão utilizada será a configurada no Builder. Para mais informações, consulte a seção de versionamento.

Versionamento quando chamado pelo método invoke

Para o segundo caso, a versão utilizada será do ambiente onde o HTTP Listener teve seu invoke chamado.

Exemplo:

  • HTTP Listener configurado na versão v2.
  • Application configurada na versão v1.

A Application tem um Artboard com um botão que chama o HTTP Listener pelo método invoke. Ao clicar no botão, o HTTP Listener será chamado na versão v1, que é a mesma versão da Application.

Exemplo

Neste exemplo, iremos criar um HTTP Listener que recebe uma requisição POST, esperando um body com o campo fruit e retorna uma resposta JSON adicionando pie no fim do valor de fruit. Ou seja, se o body for {"fruit": "apple"}, a resposta será {"fruit": "apple pie"}.

Criando o HTTP Listener

  • Dê dois cliques no fundo do Builder, selecione a aba Rush e depois HTTP Listener.
  • Dê um nome ao seu HTTP Listener, por exemplo, FruitPieMaker.
  • Clique em Handler, depois em Actions e Add Item.
  • Na primeira ação, vamos colocar um log para imprimir o valor de body.fruit nos logs de execução do Rush. Para isso:
    • Selecione LoggerService em Module.
    • Selecione log em Interaction.
    • No argumento message, clique no f() e selecione StringConcat. Clique no StringConcat e depois clique em Portions para adicionar o texto que você quer.
    • Clique em Add Item e escreva algo como Received fruit: .
    • Clique em Add Item novamente, clique no f() e selecione Context Reference. Clique no Reference e coloque body.fruit no argumento reference.
  • Verifique se os parâmetros Enable Execution Logs e Should Log Request Body estão habilitados.

É uma boa prática testar constatemente seu HTTP Listener para garantir que ele está funcionando como esperado. Para isso, digite { "fruit": "apple" } no Body do renderable do HTTP Listener e clique no botão Send. Em alguns instantes, você verá o log de execução do Rush no Builder. Ao clicar no log, você consegue ver informações da requisição, e na parte de Logs, deveria ver uma mensagem com Received fruit: apple.

info

Os logs são bem úteis enquanto você está desenvolvendo seu Rush, e também para debugar problemas que ocorram quando o Rush está rodando. Use com frequência!

note que no output do HTTP Listener, o parâmetro body está vazio. Isso aconteceu porque não configuramos o que retornar do handler. Para fazer isso:

  • Clique em Handler, depois em Actions e Add Item.
  • Clique em Actions e Add Item.
  • Na segunda ação, vamos configurar o que retornar. Para isso:
    • Clique em f(), selecione em object e clique para navegar.
    • Clique no + ao lado do cabeçalho Object do inspector para adicionar uma chave a esse objeto, no nosso caso, fruit.
    • Clique no f() ao lado de fruit e selecione StringConcat. Clique no StringConcat e depois clique em Portions para adicionar o texto que você quer.
    • Clique em Add Item duas vezes.
    • No segundo item, coloque pie.
    • No primeiro item, clique no f() e selecione Context Reference. Clique no Reference e coloque body.fruit no argumento reference.

Teste novamente o HTTP Listener com o mesmo corpo da requisição, { "fruit": "apple" }, e você verá que o corpo (body) do output agora está com o valor { "fruit": "apple pie" }.

A URL do HTTP Listener é a que está disponível no renderable do HTTP Listener. É possível clicar no botão ao lado da URL para copiar a URL.

URL do HTTP Listener

Limitações

O HTTP Listener ainda não suporta:

  • Domínios customizados.
  • Alterar a URL do HTTP Listener.