HTTP Request

Realiza uma chamada HTTP e retorna o resultado em uma variável de contexto.

Estrutura

[
    {
        "name": "http_request",
        "parameters": {
            "config": {
                "url": "https://api.altu.com.br/teste",
                "data": {
                    "param1": "value1",
                    "param2": "value2",
                    "param3": "<? $var_contexto ?>",
                },
                "method": "POST",
                "headers": {
                    "Authorization": "meu_token"
                }
            },
            "flavor": "axios",
            "before_action_messages": [
                "Mensagem 1",
                "Mensagem 2"
            ]
        },
        "result_variable": "api_response"
    }
]
  • name: http_request

  • parameters:

    • config: configuração da chamada https que será feita. Deve conter a opção da biblioteca indicada no atributo flavor(biblioteca axios do NodeJS). Abaixo segue exemplo:

      Lista de opções da biblioteca axios

    • url: url da chamada HTTP

    • data: parâmetros da chamada HTTP

    • method: método da chamada HTTP

    • headers: cabeçalho da chamada HTTP

      • Authorization: token de autenticação da chamada

    • flavor: biblioteca que será usada para realizar o request, neste caso, axios

    • before_action_messages: mensagens para serem enviadas ao usuário antes da execução da ação

  • result_variable: variável de contexto que receberá a resposta da chamada HTTP

No exemplo acima, não são necessários os parâmetros body e headers. É realizada uma consulta ao webservice ViaCEP. Foi passada uma variável de contexto $cep na URL e o retorno é o JSON abaixo:

Supondo que deseja manipular essas informações, bastaria acessá-las percorrendo a variável de contexto que, no parâmetro result_variable, armazenou o JSON de resposta. Por exemplo:

HTTP_Request Async

O Http Request async é uma opção para as ações de requisição assíncrona, ou seja, uma comunicação que não ocorre simultaneamente evitando falhas ou pausa no sistema. Por meio dele é possível utilizar duas flags: async e waitTime, que podem ser adicionadas dentro dos parâmetros do código.

A flag waitTime só pode ser utilizada juntamente com async e permite definir um tempo para realizar a chamada, ou seja, caso classifiquem "waitTime": 60 teremos um tempo de espera de 1 minuto antes que a chamada HTTP seja realizada.

No caso do async são aceitos os valores de true e false, caso não seja especificado será classificado como false por padrão e seguirá o mesmo padrão do http_request. Já no waitTime devem ser utilizados valores em segundos entre 0 e 900 (equivalente a 15 minutos).

Estrutura

Atributos

  • name: http_request

  • parameters:

    • async: default false. true or false

    • config: configuração da chamada https que será feita. Deve conter a opção da biblioteca indicada no atributo flavor(biblioteca axios do NodeJS). Abaixo segue exemplo:

      Lista de opções da biblioteca axios

    • url: url da chamada HTTP

    • data: parâmetros da chamada HTTP

    • method: método da chamada HTTP

    • flavor: biblioteca que será usada para realizar o request, neste caso, axios

    • waitTime: valores de 0 a 900 (em segundos), quando "async": true.

  • result_variable: variável de contexto que receberá a resposta da chamada HTTP

Responses

Quando async for true o fluxo continua e o result_variable é preenchido com o status Pending, indicando que a requisição está em andamento, ao final da chamada da API é enviada uma nova mensagem atualizando o resultado como Done, ou seja, concluída com sucesso.

Informa que a requisição está em andamento

Exemplos

Após a conclusão da chamada HTTP um input.text é enviado ao assistente com a mensagem "ALTU_ASYNC_HTTP_RESPONSE", possibilitando o envio da resposta da API.

Filtro de resposta

Utilize filtros para obter respostas de APIs no Builder utilizando o JSONPATH-PLUS, basta adicionar o campo responseFilter com a expressão do que você gostaria de filtrar, como no exemplo:

Estrutura

Atributos

  • name: http_request

  • parameters:

    • config: configuração da chamada https que será feita. Deve conter a opção da biblioteca indicada no atributo flavor(biblioteca axios do NodeJS). Abaixo segue exemplo:

      Lista de opções da biblioteca axios

    • url: url da chamada HTTP

    • flavor: biblioteca que será usada para realizar o request, neste caso, axios

    • responseFilter: expressão no formato JSONpath para filtrar a resposta da API

    • before_action_messages(opcional): Mensagem enviada para o usuário antes da execução a ação.

  • result_variable: variável de contexto que receberá a resposta da chamada HTTP

Funcionalidades

  • ^ Busca por elemento igual da expressão

  • ~ Seleciona o nome das propriedades (as array)

  • Seletores possíveis

    • @null(), @boolean(), @number(), @string(), @array(), @object(), @integer( )

    • Seletores para facilitar acesso a estruturas @path/@parent/@property/@parentProperty/@root

  • Escaping

    • `: para utilizar caracteres reservados. ex: `$

    • Em casos mais complexos também é possível utilizar:

      • @['...']/?@['...']

Tabela de sintaxe

Caracteres

Descrição

$

Raiz do objeto ou elemento

@

Objeto ou elemento atual

.

Operador para filhos do objeto

..

Operador descendente recursivo

*

Caractere coringa correspondendo a todos os objetos ou elementos, independentemente de seus nomes

[]

Operador subscrito

[, ]

Operador de união para nomes alternativos ou índices de matriz como um conjunto

[start:end:step]

Operador para dividir o array

?()

Aplica uma lógica de comparação (script)

Tabela de expressões

Caracteres

Descrição

$..

Retorna todos os dados de forma recursiva

$..*

Retorna todos os valores do primeiro nível da resposta da API

$..*~

Retorna todos os nomes dos campos do primeiro nível da resposta da API

$..nome

Retorna os valores encontrados para a variável nome dentro da resposta da API

$..[nome, cidade]

Retorna os valores encontrados para as variáveis nome e cidade dentro da resposta da API

$..nome[1]

Retorna o segundo nome dentro da resposta da API

$..nome[-1:]

Retorna o ultimo nome da resposta da API

$..book.*[?(@property !== "category")]

Retorna todos os campos dos livros, tirando o campo 'category'

Exemplos:

1 - Assumindo uma resposta de API sendo:

2 - Respostas com composição mais complexa

Você pode testar a sua expressão no site: https://jsonpath-plus.github.io/JSONPath/demo/

Last updated

Was this helpful?