Todas as coleções
Triggers
HTTP File Trigger - Uploads
HTTP File Trigger - Uploads

Conheça o trigger e saiba como utilizá-lo

Rodrigo Lara avatar
Escrito por Rodrigo Lara
Atualizado há mais de uma semana


O HTTP File Trigger envia arquivos grandes (com tamanho superior a 5MB) para pipelines de forma robusta e eficiente, utilizando HTTP.

Dê uma olhada nos parâmetros de configuração do trigger:

  • Methods: define os métodos aceitos pelo pipeline (GET, PUT, POST, PATCH e DELETE).

  • Response Headers: headers a serem retornados pelo endpoint quando o processamento no pipeline terminar. Esse parâmetro não pode ser deixado vazio e aceita Double Braces. Caracteres especiais não devem ser utilizados nas chaves, por conta de possíveis falhas em proxys e gateways.

  • Add Cross-Origin Resource Sharing (CORS) - CORS Headers: adicione os CORS headers a serem retornados pelo endpoint quando o processamento no pipeline terminar. 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 o artigo CORS Global .


Importante: 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.


  • Form Data Uploads: habilita/desabilita o recebimento do upload de form data (multi-part form data).

  • Body Uploads: habilita/desabilita o recebimento do upload de bodies.

  • Body Upload Content Types: define os content types permitidos pelo pipeline para o upload de bodies.

  • Response Content Types: define os content types de resposta permitidos para o pipeline - ao configurar essa resposta, você determina o formato de resposta.

  • Maximum Timeout: define o tempo máximo de expiração (padrão = 60000).

  • Maximum Request Size: define o tamanho máximo do arquivo na solicitação de upload (em MB) (máximo = 100 MB).

  • External API: se ativada, a opção publica o API em um gateway externo.

  • Internal API: se ativada, a opção publica o API em um gateway interno.

  • mTLS enabled API: se a opção estiver ativada, a API é publicada em um gateway dedicado a APIs com mTLS ativo por padrão. Nesse caso, o host de acesso será diferente dos demais. O pipeline pode ter tanto a opção de External API quanto a Internal API habilitadas simultaneamente, mas é recomendado deixá-las inativas. Este parâmetro não suporta API Key e JWT. 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.

  • API Key: se ativada, a opção vai solicitar a chave para consumo do API.

  • Token JWT: se ativada, a opção vai solicitar o token para consumo do API.

  • Additional API Routes: se ativada, a opção permite que você adicione novas rotas.

  • API Routes: rotas customizáveis.

  • Security (Legacy): se ativada, a opção determina a necessidade de uso de um token JWT para acessar a API exposta.

  • Allow Redelivery Of Messages: se ativada, a opção permite que as mensagens sejam entregues novamente caso o Pipeline Engine falhe.

HTTP File Trigger em Ação

Cenário 1: POST de um arquivo com content type "multipart/form-data"

Digamos que você queira enviar um arquivo com mais de 5MB. Você pode chamar um endpoint de pipeline configurado com HTTP Trigger via POST com o content type "multipart/form-data" para que esse arquivo fique disponível para ser trabalhado pelo pipeline.

Veja como fazer isso:

  1. Crie um pipeline e configure seu trigger como HTTP-File, habilitando a opção Form Data Uploads.

  2. Implante o pipeline.

  3. Crie uma API Key e o configure de modo que tenha acesso ao pipeline.

  4. Chame o pipeline através deste curl:

curl -d “@file_name” https://godigibee.io/pipeline/realm_name/v1/http-file-upload -v -H 'Content-Type: application/pdf' -H 'apikey: generated_token'

  • file_name: se refere a um arquivo local

  • realm_name: se refere ao Realm onde o pipeline se encontra

  • generated_token: se refere à chave de API gerada pela API Key recém-criada


O pipeline receberá um array files[] contendo:

  • fileName

  • param

  • contentType

Dessa maneira, o arquivo pode ser referenciado e acessado a partir do pipeline:

{
  "body": null,
  "form": {},
  "headers": {
  ...
  },
  "queryAndPath": {},
  "method": "POST",
  "contentType": "application/pdf",
"path": "/pipeline/realm_name/v1/http-file-upload",
  "files": [
    {      
      "fileName": "55acdc09-c0fc-4f6a-b3ee-f4199076b0c4",
      "param": "body",
      "contentType": "application/pdf"    
    }  
  ]
}

 

Cenário 2: POST de múltiplos arquivos com content type "multipart/form-data"

Digamos que você tenha vários arquivos com mais de 5MB. Você pode chamar um endpoint de pipeline configurado com HTTP Trigger via POST com o content type "multipart/form-data" para que esses arquivos fiquem disponíveis para serem trabalhados pelo pipeline.

Para viabilizar isso, basta seguir estes passos:

  1. Crie um pipeline e configure seu trigger como HTTP-File, habilitando a opção Form Data Uploads.

  2. Implante o pipeline.

  3. Crie uma API Key e o configure de modo que tenha acesso ao pipeline.

  4. Chame o pipeline através deste curl:

curl -F dgbfile1=@file_name1 -F dgbfile2=@file_name2 https://godigibee.io/pipeline/realm_name/v1/http-file-upload -v -H 'apikey: generated_token'

  • file_name1: se refere a um arquivo local

  • file_name2: se refere a um arquivo local

  • realm_name: se refere ao Realm onde o pipeline se encontra

  • generated_token: se refere à chave de API gerada pela API Key recém-criada

O pipeline receberá um array files[] contendo:

  • fileName

  • originalFileName

  • param

  • charset

  • contentLength

  • contentType

Dessa maneira, os arquivos podem ser referenciados e acessados a partir do pipeline:


{
  "body": "",
  "form": {},
  "headers": {
    ...
  },
  "queryAndPath": {},
  "method": "POST",
  "contentType": "multipart/form-data; boundary=------------------------b3c985803b952f2c",
"path": "/pipeline/realm_name/v1/http-file-upload",
  "files": [
    {
      "fileName": "96f3ecb2-1c72-4980-9f01-6f44cafc719f",
      "originalFileName": "file1",
      "param": "dgbfile1",
      "contentType": "application/octet-stream",
      "charset": "UTF-8",
      "contentLength": 5242880
    },
    {
      "fileName": "58fb844f-a1d1-4788-b9b4-30df4b69165e",
      "originalFileName": "file2",
      "param": "dgbfile2",
      "contentType": "application/octet-stream",
      "charset": "UTF-8",
      "contentLength": 5242880
    }
  ]
}


 


Cenário 3: POST com qualquer content type e body com mais de 5 MB

Digamos que você tenha vários arquivos com mais de 5MB. Você pode chamar um endpoint de pipeline configurado com HTTP Trigger via POST com qualquer content type para que esses arquivos fiquem disponíveis para serem trabalhados pelo pipeline.

Tudo o que você tem que fazer é:

  1. Criar um pipeline e configure seu trigger como HTTP-File, habilitando a opção Body Uploads.

  2. Implantar o pipeline.

  3. Criar uma API Key e o configure de modo que tenha acesso ao pipeline.

  4. Chamar o pipeline através deste curl:

curl -d '@file_name1' https://godigibee.io/pipeline/realm_name/v1/http-file-upload -v -H 'apikey: generated_token'

  • file_name: se refere a um arquivo local

  • realm_name: se refere ao Realm onde o pipeline se encontra

  • generated_token: se refere à chave de API gerada pela API Key recém-criada

O pipeline receberá um array files[] contendo:

  • fileName

  • param

  • charset

  • contentType

Dessa maneira, os arquivos podem ser referenciados e acessados a partir do pipeline:

{
  "body": null,
  "form": {},
  "headers": {
    ...
  },
  "queryAndPath": {},
  "method": "POST",
  "contentType": "application/pdf",
"path": "/pipeline/realm_name/v1/http-file-upload",
  "files": [
    {
      "fileName": "55acdc09-c0fc-4f6a-b3ee-f4199076b0c4",
      "param": "body",
      "contentType": "application/pdf"
    }
  ]
}


Resposta do HTTP File Trigger

É simples definir o formato da resposta do pipeline. Adicione um Transformer ao final do pipeline e defina a resposta:

{
  "body": "<xml>Output 1</xml>",
  "code": 200,
  "Content-Type": "application/xml"
}

IMPORTANTE: Content-Type precisa ser um dos valores definidos em Response Content Types.

Clique aqui para ler o artigo que explica como garantir que a saída do pipeline seja um arquivo.

Respondeu à sua pergunta?