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)
.
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
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
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
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.
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.
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
Isto foi útil?