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çãoheaders: cabeçalhos da requisiçãomethod: método da requisiçãoquery: 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:
- Bater na URL do
HTTP Listener. - Chamar o método
invokedoHTTP 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 Listenerconfigurado na versãov2.Applicationconfigurada na versãov1.
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
Rushe depoisHTTP Listener. - Dê um nome ao seu
HTTP Listener, por exemplo,FruitPieMaker. - Clique em
Handler, depois emActionseAdd Item. - Na primeira ação, vamos colocar um log para imprimir o valor de
body.fruitnos logs de execução do Rush. Para isso:- Selecione
LoggerServiceemModule. - Selecione
logemInteraction. - No argumento
message, clique nof()e selecioneStringConcat. Clique noStringConcate depois clique emPortionspara adicionar o texto que você quer. - Clique em
Add Iteme escreva algo comoReceived fruit:. - Clique em
Add Itemnovamente, clique nof()e selecioneContext Reference. Clique noReferencee coloquebody.fruitno argumentoreference.
- Selecione
- Verifique se os parâmetros
Enable Execution LogseShould Log Request Bodyestã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.
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 emActionseAdd Item. - Clique em
ActionseAdd Item. - Na segunda ação, vamos configurar o que retornar. Para isso:
- Clique em
f(), selecione emobjecte clique para navegar. - Clique no
+ao lado do cabeçalhoObjectdo inspector para adicionar uma chave a esse objeto, no nosso caso,fruit. - Clique no
f()ao lado defruite selecioneStringConcat. Clique noStringConcate depois clique emPortionspara adicionar o texto que você quer. - Clique em
Add Itemduas vezes. - No segundo item, coloque
pie. - No primeiro item, clique no
f()e selecioneContext Reference. Clique noReferencee coloquebody.fruitno argumentoreference.
- Clique em
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.
Limitações
O HTTP Listener ainda não suporta:
- Domínios customizados.
- Alterar a URL do
HTTP Listener.