REST Trigger

Descubra mais sobre o REST Trigger e saiba como utilizá-lo na Digibee Integration Platform.

Quando um pipeline é configurado e publicado com o REST Trigger, um endpoint REST é criado automaticamente. Você pode visualizar esse endpoint após a implantação - basta clicar no cartão do pipeline na tela de Run.

Com esse trigger, você pode criar APIs que atendem o padrão REST e definir rapidamente quais os métodos que seu endpoint responderá.

Parâmetros

Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Parâmetro
Descrição
Valor padrão
Tipo de dado

Methods

Serve para configurar os verbos HTTP a serem suportados pelo endpoint após a implantação.

POST, PUT, GET, PATCH, DELETE e OPTIONS

String

Response Headers

Headers a serem retornados pelo endpoint quando o processamento no pipeline terminar.

N/A

String

Maximum Timeout

Tempo limite (em milissegundos) para que o pipeline processe informações antes de retornar uma resposta. Limite: 900000.

30000

Inteiro

Maximum Request Size

Tamanho máximo do payload (em MB).

5

Inteiro

Response Headers (DB)

Headers a serem retornados pelo endpoint quando o processamento no pipeline terminar.

Não pode ser deixado vazio. Aceita Double Braces.

N/A

Pares de chave-valor

Add Cross-Origin Resource Sharing (CORS)

Adicione os CORS headers a serem retornados pelo endpoint quando o processamento no pipeline terminar.

False

Booleano

CORS Headers

Este parâmetro define o CORS especificamente ao pipeline e suas restrições.

N/A

Pares de chave-valor

External API

Se a opção estiver ativada, a API é publicada em um gateway externo.

True

Booleano

Internal API

Se a opção estiver ativada, a API é publicada em um gateway interno. O pipeline pode ter tanto a opção de External API quanto a Internal API habilitadas simultaneamente.

False

Booleano

mTLS enabled API

Se a opção estiver ativada, a API é publicada em um gateway dedicado a APIs com mTLS ativo por padrão.

False

Booleano

API Key

Se a opção estiver ativada, o endpoint pode ser consumido apenas se for enviada uma chave de API previamente configurada na Digibee Integration Platform.

False

Booleano

Token JWT

Se a opção estiver ativada, o endpoint pode ser consumido apenas se for enviado um token JWT previamente gerado por outro endpoint com essa capacidade. Leia o artigo da implementação JWT para obter mais detalhes.

False

Booleano

Basic Auth (Fase Beta)

Se a opção estiver ativada, o endpoint só pode ser consumido se uma configuração de Basic Auth estiver presente na requisição.

False

Booleano

Additional API Routes

Se a opção estiver ativada, o trigger permite que você configure novas rotas.

False

Booleano

Remove Digibee Prefix from Route

Esta opção estará disponível somente quando os parâmetros External API e Internal API estiverem desabilitados, e os parâmetros mTLS enabled API e Additional API Routes estiverem habilitados.

False

Booleano

Routes

Exibido somente quando o parâmetro Additional API Routes_ _estiver habilitado. É aqui que você consegue definir as rotas adicionais do endpoint.

N/A

String

Rate Limit

Se a opção estiver ativada, uma configuração de rate limiting será aplicada no API Gateway. Disponível se API Key ou Basic Auth estiverem ativados.

False

Booleano

Limit by

Define a entidade na qual os limites serão aplicados. Opções: API.

API

String

Aggregate by

Define a entidade agregadora dos limites. Opções. Consumer ou Credential (API Key, Basic Auth).

Consumer

String

Options

Define o limite de requisições que podem ser feitas dentro de um período de tempo.

N/A

Opções de Rate Limit

Interval

Define o intervalo de tempo para o limite de requisições. Opções: second, minute, hour, day e month.

Second

String

Limit

Define o número máximo de requisições que os usuários podem fazer no intervalo de tempo especificado.

N/A

Inteiro

Allow Redelivery Of Messages

Se a opção estiver ativada, permite o reenvio da mensagem em caso de falha do Pipeline Engine. Leia o artigo sobre o Pipeline Engine para obter mais detalhes.

False

Booleano

Existe um parâmetro de configuração global que obriga todos os pipelines a serem publicados com ao menos a opção API Key ou Basic Auth habilitada.

Informações adicionais sobre parâmetros

Add Cross-Origin Resource Sharing (CORS) - CORS Headers

O Cross-Origin Resource Sharing (CORS) é um mecanismo que permite informar ao navegador quais origens tem a permissão para fazer requisições. Este parâmetro define o CORS especificamente ao pipeline e suas restrições. Para configurar de forma global ao invés de individualmente em cada pipeline, consulte a política de Cabeçalho HTTP CORS. Utilizamos vírgula para informar múltiplos valores em um header, mas não adicionamos espaço antes ou após a vírgula. Caracteres especiais não devem ser utilizados nas chaves, por conta de possíveis falhas em proxys e gateways.

Maximum Request Size

Caso o payload enviado pelo consumidor do endpoint ultrapasse o limite, será retornada uma mensagem indicando que o tamanho máximo foi ultrapassado e um status-code 413 com a seguinte mensagem:

{  
    "message": "Request size limit exceeded"
}

mTLS enabled API

Este parâmetro não suporta API Key, JWT ou Basic Auth. Para utilizá-lo no seu realm, é necessário fazer uma solicitação via chat e assim enviaremos as informações necessárias para instalação deste serviço.

Additional API Routes

Conforme explicado anteriormente, essa opção serve para configurar rotas novas no endpoint.

Ao implantar um pipeline, uma URL é criada automaticamente. No entanto, você pode customizar a rota de acordo com o que for mais conveniente. Isso inclui também o recebimento de parâmetros através da rota.

Depois que os pipelines são implantados, as URLs adquirem a seguinte estrutura:

TEST:

https://test.godigibee.io/pipeline/{realm}/v{n}/{pipeline-name} 

ou PROD:

https://api.godigibee.io/pipeline/{realm}/v{n}/{pipeline-name}
  • {realm}: corresponde ao realm.

  • v{n}: versão principal (major) do pipeline.

  • {pipeline-name}: nome dado ao pipeline.

Rota estática customizada

Vamos supor que você criou o pipeline product-list. Levando em consideração o comentário acima, a sua URL teria a seguinte aparência:

https://test.godigibee.io/pipeline/realm/v1/product-list

Agora, veja como configurar uma rota estática para esse caso.

Com essas configurações aplicadas e o pipeline implantado, você obtém uma nova URL:

https://test.godigibee.io/pipeline/realm/v1/products

Rota customizada com parâmetro no caminho

Usando como exemplo o mesmo pipeline configurado anteriormente, veja como configurar a rota:

Com essas configurações aplicadas e o pipeline implantado, você obtém uma nova URL:

https://test.godigibee.io/pipeline/realm/v1/products/:id

Nesse caso, o consumidor do endpoint pode enviar uma requisição contendo o id de um produto e retornar apenas as informações dele. Exemplo da URL na requisição:

https://test.godigibee.io/pipeline/realm/v1/products/10156

Para utilizar esse valor enviado pela rota dentro do pipeline, recorra à sintaxe Double Braces:

{{ message.queryAndPath.id }}

Remove Digibee Prefix from Route

Como explicado anteriormente, esta opção é recomendada para remover o prefixo de rota padrão Digibee da rota do pipeline.

Digamos que você tenha criado um pipeline e definido o trigger da seguinte forma:

Com as configurações aplicadas e o pipeline implantado, você terá uma nova URL:

https://test.godigibee.io/products

Ao remover o prefixo padrão e definir a rota do pipeline pelo parâmetro Additional API Routes, tenha cuidado para não definir uma rota de pipeline existente que esteja em uso por outros pipelines. Caso você tenha mais do que uma versão principal do pipeline, também é importante ter em mente que o versionamento da rota do pipeline deve ser feito pelo usuário devido à ausência de um parâmetro para versionamento da rota. Por exemplo: /pipeline/realm/v1/.

Rate Limit

Ao criarmos APIs, geralmente queremos limitar o número de requisições da API que usuários podem fazer em um dado intervalo de tempo.

Esta ação pode ser executada ativando a opção Rate Limit e aplicando as seguintes configurações:

Se a API possui rotas adicionais, o limite é compartilhado entre todas as rotas. Para aplicar as configurações de rate limit, a API precisa ser configurada com uma API Key ou Basic Auth para que o parâmetro Aggregate by possa ser usado por grupos de credenciais se a opção Consumer estiver selecionada, ou por credenciais individuais se a opção Credential (API Key, Basic Auth) estiver selecionada.

Se vários parâmetros Interval estiverem configurados com valores repetidos, apenas um desses valores é considerado. Também é necessário que um valor maior que zero seja informado para o parâmetro Limit.

Se as opções de rate limiting não forem definidas corretamente, elas serão ignoradas e um warning log será emitido. Você pode visualizar esse log na página de Pipeline Logs.

REST Trigger em Ação

Veja a seguir como o trigger se comporta em determinada situação e a sua respectiva configuração.

API de consulta de informações com retorno em JSON

Observe como configurar um pipeline com o REST Trigger para retornar uma informação de dentro do pipeline em formato JSON e como o retorno deve ser tratado especificamente para esse trigger.

Primeiramente, crie um novo pipeline e configure o trigger. A configuração pode ser feita da seguinte forma:

Com as configurações acima, você determina que:

  • o endpoint funciona apenas com o verbo GET.

Além disso, você determina que a API é do tipo externa e não precisa de token para a comunicação.

Esse exemplo serve apenas para fins educacionais. Em alguns casos você não deve deixar o endpoint aberto por questões de segurança.

Agora observe como configurar um MOCK no pipeline para que ele seja o provedor de dados que o endpoint retorna ao final. Coloque o componente indicado, conecte-o ao trigger e configure-o com o seguinte JSON:

{    "data": {        "products": [            {                "name": "Samsung 4k Q60T 55",                "price": 3278.99            },            {                "name": "Samsung galaxy S20 128GB",                "price": 3698.99            }        ]    }}

Feito isso, o endpoint já retornará automaticamente o JSON que definimos acima como resposta do endpoint.

Após a implantação, pegue a URL gerada e envie uma requisição do tipo GET. O endpoint deve retornar o status-code 200, e o corpo da resposta deve ter a mesma aparência do JSON que previamente definimos dentro do conector MOCK.

API de envio de informações com retorno em JSON

Observe como configurar um pipeline com o REST Trigger para retornar uma informação de dentro do pipeline em formato JSON e como o retorno deve ser tratado especificamente para esse trigger.

Primeiramente, crie um novo pipeline e configure o trigger. A configuração pode ser feita da seguinte forma:

Com as configurações acima, você determina que:

  • o endpoint funciona apenas com o verbo POST.

Além disso, você determina que a API é do tipo externa e não precisa de token para a comunicação.

Esse exemplo serve apenas para fins educacionais. Em alguns casos você não deve deixar o endpoint aberto por questões de segurança.

Agora observe como configurar um MOCK no pipeline para que ele modifique os dados recebidos e que o endpoint retornará ao final. Coloque o componente indicado, conecte-o ao trigger e configure-o com o seguinte JSON:

{
    "data": {
        "products": [
            {
                "name": "Samsung 4k Q60T 55",
                "price": 3278.99
            },
            {
                "name": "Samsung galaxy S20 128GB",
                "price": 3698.99
            },
            {{ message.body.product }}
        ]
    }

Com isso configurado, um payload com um novo produto será recebido e esse será adicionado ao array. Após isso, o pipeline retornará para o consumidor o array com o novo produto adicionado.

Após a implantação, pegue a url gerada e envie uma requisição do tipo POST com o seguinte body:

{
    "product": {
        "name": "Samsung galaxy note 10 256GB",
        "price": 2879.99
    }
}

O endpoint deve retornar o status-code 200, e o corpo da resposta deve ter a seguinte aparência:

{
  "data": {
    "products": [
      {
        "name": "Samsung 4k Q60T 55",
        "price": 3278.99
      },
      {
        "name": "Samsung galaxy S20 128GB",
        "price": 3698.99
      },
      {
        "name": "Samsung galaxy note 10 256GB",
        "price": 2879.99
      }
    ]
  }
}

Sempre que você realizar uma requisição ao endpoint criado, a estrutura da mensagem que o trigger entrega ao pipeline é sempre a mesma e segue este padrão:

{
  "body": "{}",
  "form": {},
  "headers": {
    "Host": "pipeline-trigger-http:8100",
    "Connection": "keep-alive",
    "X-Forwarded-For": "***",
    "X-Forwarded-Proto": "http",
    "X-Forwarded-Host": "***",
    "my-custom-header": "a"
  },
  "queryAndPath": {
    "id": "1"
  },
  "method": "POST",
  "contentType": "application/json",
  "path": "/pipeline/digibee/v1/trigger-rest/1"

}
  • body: conteúdo a ser enviado no payload do request para ser transformado em string neste campo.

  • form: se o form-data for utilizado no request, os dados enviados são entregues neste campo.

  • headers: os headers enviados no request são entregues neste campo, mas alguns são preenchidos automaticamente de acordo com a ferramenta utilizada para realizar o request.

  • queryAndPath: os parâmetros de query e path passados na URL são entregues neste campo.

  • method: método HTTP utilizado no request a ser entregue neste campo.

  • contentType: quando informado no request, o valor do Content-type é repassado para o pipeline dentro desse campo.

  • path: o path utilizado na URL no request é repassado nesse campo.

  • absoluteURI: a URI absoluta do request é passada nesse campo.

Atualizado