HTTP
Objetivo/Resumo
O conector HTTP é responsável por estabelecer uma conexão entre o cliente e o servidor, enviar solicitações HTTP e receber respostas HTTP. O conector também permite o usuário gerenciar a autenticação e segurança durante a comunicação.Criando um fluxo utilizando Conector HTTP
Para criar um fluxo utilizando um conector de HTTP, dependendo do caso precisaremos criar uma conexão, e configurar a parametrização do fluxo
Nota: não necessariamente precisamos de uma conexão, isso vai depender do servidor que deseja enviar a solicitação.
Criando conexão HTTP
OBS: Clique aqui e acesse nosso passo a passo para saber como criar uma conexão.
Estes são os seguintes parâmetros de configuração da conexão HTTP que serão requisitados na hora da criação:
- Nome: parâmetro padrão em qualquer criação de uma conexão, te ajudará a identificar melhor sua conexão.
- Descrição: parâmetro padrão e opcional em qualquer criação de uma conexão, aqui você pode relatar detalhadamente para que fins servirá sua conexão.
- Autenticação HTTP: parâmetro usado para referenciar como será a autenticação ao servidor. Nele temos três tipos:
- Basic: o cliente envia um cabeçalho de autenticação com seu nome de usuário e senha.
- Bearer Token: o cliente usa tokens de acesso para autenticar solicitações.
- API Key: o cliente envia um código alfanumérico exclusivo (API Key) que identifica o aplicativo e o autoriza a acessar a API. Aqui temos duas opções de envio, via URL ou no Cabeçalho
- OAuth2.0: o cliente precisa inserir os dados do aplicativo que pretende se conectar, como client_id, client_secret, scope e adicionar https://console.fluidapi.io/como redirect_uri no aplicativo. Também é necessário informar o authorization_url e access_token_url para tratamento das credênciais. Com isso basta clicar no botão login para liberação do acesso à aplicação.
- OAuth1.0: o cliente precisa informar qual será o signature_method, consumer_key, consumer_secret, access_token e se necessário o realm do serviço que pretende se conectar.
- Bearer Token Custom: um tipo customizado onde é gerado um token via login de usuário e senha, em seguida gerado um outro token junto com um refresh através de uma url de autenticação, e por fim usamos esse token para se autenticar com a api via Bearer Token. Também é necessário informar uma url para fazer o refresh do token sempre que ele vencer.
Importante: para setar os valores de qualquer autenticação temos duas opções: Recuperar Valor do cache/requisição - onde o usuário por exemplo precise fazer uma requisição para obter um Bearer Token, aqui será preciso informar o caminho onde o valor se encontra. Usar valor fixo/template - onde o usuário pode passar um valor fixo.
Configuração Detalhada
- Requisição: caso o usuário precise fazer uma requisição para obter um valor de autenticação, e informa-lo em uma das opções do campo Autenticação HTTP.
- Verbo: métodos HTTP a serem suportados pelo endpoint POST, PUT, GET, PATCH, DELETE
- Corpo: body da requisição.
- Cabeçalho: headers a serem enviados para o endpoint.
- URL: URL contendo o endpoint onde será solicitado a requisição.
- Cache: o cache armazena uma resposta associada a uma solicitação e reutiliza a resposta armazenada para solicitações subsequentes.
- Expiração: indica ao navegador por quanto tempo ele poderá manter a resposta em cache antes de solicitar uma nova.
- Caminho dos valores: usado para informar os caminhos dos valores a serem armazenados.
Configurando fluxo HTTP
Crie um fluxo e arraste o conector HTTP para o canvas.
OBS: Clique aqui e acesse nosso passo a passo para saber como criar um fluxo.
Selecione o conector e na aba de Parametrização e preencha os seguintes parâmetros de configuração:
- Verbo: métodos HTTP a serem suportados pelo endpoint POST, PUT, GET, PATCH, DELETE
- URL: URL contendo o endpoint onde será solicitado a requisição.
- Corpo: body da requisição, podendo ser passado através de um De/Para ou Template.
- Cabeçalho: headers a serem enviados para o endpoint.
- Opções avançadas:
- Converter resposta em Base64: ao ativar, todo o conteúdo da resposta será convertido em Base64 (Recomendado usar para trafego de arquivos)
Nota: Estes campos podem ser preenchidos usando Fluid Expression Language.
Na aba Propriedades selecione a conexão desejada, dê um nome ao passo e se necessário detalhe uma descrição.
Envio de arquivos com FormData
Quando o corpo da requisição é configurado como FormData, o conector HTTP envia os dados no formato multipart/form-data, permitindo anexar arquivos e campos de texto.
Caso precise enviar algum arquivo, deve-se garantir que o conteúdo do mesmo esteja em base64 (para auxiliar temos um conector de conversão de base64 e o próprio conector HTTP disponibiliza uma opção para converter o retorno em base64 caso tenha uma url de download do arquivo disponível).
Exemplo

Nesse caso temos dois passos com o conector HTTP o primeiro faz um GET em uma url que retorna o conteudo de um arquivo pdf, e o segundo envia esse arquivo via FormData para uma api.
No primeiro passo é configurado a opção de retorno em base64:

E no segundo passo é configurado o envio do FormData com base no retorno do passo anterior que por sua vez esta em base64:

O conecter HTTP quando configurado um FormData sempre irá validar se o conteudo é um base64, caso seja irá ele mesmo fazer a conversão para binário e enviar à api.
Na prática
Neste tópico será aplicado exemplos de implementações com intuito de mostrar o conector HTTP na prática. Será criado dois fluxos com cenários diferentes que vai do básico até o avançado.
Cenário 1
GET em uma API pública (https://random-data-api.com/api/v2/user) cuja endpoint de acesso retornará dados aleatórios de usuários. Neste caso não será preciso criar uma conexão pois a API não necessita de autenticação. Para obter detalhes sobre como criar um fluxo clique em @saiba mais
Assim ficou as configurações na aba Parametrização:

Já na aba Propriedades só foi informado o nome do passo pois não será preciso uma conexão para esta requisição HTTP:

Resultado
Não foi necessário nenhum dado de entrada para execução desse fluxo. Então após seu disparo teremos as seguintes informações:


Fluxo de mensagens
Entrada:
Não possui dados de entradaSaída:
{
"id": 6650,
"uid": "23bfa134-b0e4-4407-84fb-e767ef90d478",
"password": "xbN1OVhPeI",
"first_name": "Rodolfo",
"last_name": "Ondricka",
"username": "rodolfo.ondricka",
"email": "[email protected]",
"avatar": "https://robohash.org/explicabovoluptasaccusantium.png?size=300x300\u0026set=set1",
"gender": "Non-binary",
"phone_number": "+49 1-857-602-2194 x997",
"social_insurance_number": "606446524",
"date_of_birth": "1994-12-02",
"employment": {
"title": "Chief Marketing Producer",
"key_skill": "Work under pressure"
},
"address": {
"city": "Kemmerport",
"street_name": "Ratke Crescent",
"street_address": "180 Goyette Fork",
"zip_code": "31754",
"state": "Indiana",
"country": "United States",
"coordinates": {
"lat": 80.70699007365332,
"lng": -71.33432653571457
}
},
"credit_card": {
"cc_number": "5557-7812-5583-6356"
},
"subscription": {
"plan": "Premium",
"status": "Idle",
"payment_method": "Credit card",
"term": "Annual"
}
}
Cenário 2
GET em uma API privada (https://customer.cooruja.app/v1/customer) cuja endpoint de acesso retornará dados do usuário logado. Para isso será necessário criar uma conexão para autenticar.
Conexão
OBS: Clique aqui e acesse nosso passo a passo para saber como criar uma conexão.
Na tela de criação da conexão após selecionado o conector HTTP e informar um nome, selecione o tipo de Autenticação. Neste cenário a api requer uma autenticação via Bearer Token, após selecionado, temos duas maneiras de informar o valor;
Usar valor fixo/template - onde o usuário ja possui o token (recomendado para token que não possui expiração).
Recuperar valor do cache/requisição - onde o usuário precisa fazer uma requisição antes para recuperar o valor, nesse caso o token.
Para esse cenário será preciso acessar o endpoint de login da api para recuperarmos o valor do token (https://customer.cooruja.app/v1/user/auth) e assim usarmos ele para autenticar nossa busca dos dados do cliente. Então em Configurações Avançadas > Requisição selecione a opção Usar requisição e preencha os campos com os seguintes valores:

A API requer que enviemos um cabeçalho informando o Content-Type:

Em seguida iremos usar a opção Cache para armazenar nosso valor e poder reutilizado em outras possíveis solicitações. Então em Configurações Avançadas > Cache selecione a opção Usar Cache e preencha os campos com os seguintes valores:

A Expiração indica ao navegador por quanto tempo ele porderá manter a resposta em cache antes de solicitar uma nova. Neste caso estamos passando um valor fixo (passado em segundos) pois a API não nos retorna o tempo de expiração do token, caso retornasse poderia ser usado a opção Recuperar valor do cache/requisição e informar o caminho onde se encontra esse valor.
Em Caminho dos valores será informado o caminho onde se encontra o valor do token na resposta da requisição para seu armazenamento, se consultarmos no Postman veremos onde se encontra esse valor:

O token está no campo access_token, logo o caminho onde ele se encontra será body.access_token.

Haja vista que temos uma requisição para buscar o token de autenticação e sabemos o caminho onde o valor esta armazenado, basta informar esse caminho em Autenticação HTTP > Bearer Token > Recuperar Valor do cache/requisição:

Visão geral da conexão para este cenário:

Fluxo
Com a conexão pronta agora é só criar e configurar o fluxo. Para obter detalhes sobre como criar um fluxo clique em @saiba mais.
Assim ficou a configuração na aba Parametrização:

Já em Propriedades:


Resultado
Não foi necessário nenhum dado de entrada para execução desse fluxo. Então após seu disparo teremos as seguintes informações:


Fluxo de mensagens
Entrada:
Não possui dados de entradaSaída:
{
"content": {
"id": "676d0f3e-e7b6-4aa1-a70c-0e4ec23199e7",
"nameFantasy": "FLYCAM SAFETY4",
"cpfCnpj": "30810572052",
"email": "[email protected]",
"contact": "84998984867",
"whatsapp": true,
"address": "RUA CAMPO AZUL",
"num": "1",
"complement": "PROX. TRE",
"latitude": -5.941431,
"longitude": -35.260507,
"enabled": true,
"district": "SONHO VERDE",
"city": "PARNAMIRIM",
"zipCode": "59000000",
"uf": "RN",
"updatedAt": "2023-02-16T03:15:12.381Z",
"createdAt": "2023-01-08T18:31:01.573Z"
}
}Configurar Opções Avançadas
Selecione se deseja configurar opções mais avançadas para a sua requisição. Essas configurações são úteis para casos específicos, como depuração ou testes, mas requerem um conhecimento avançado da plataforma ou sobre requisições HTTP.
Modo Debug
- Título: Modo Debug (não usar em produção)
- Tipo: Booleano
- Descrição: Habilite o modo Debug se precisar fornecer mais informações para a Fluid depurar algum problema. Este modo fornece logs detalhados sobre a requisição e a resposta.
Nota importante: Não deve ser usado em ambientes de produção devido à quantidade de informações sensíveis que podem ser registradas e a quantidade de logs gerados.
Ignorar Validação de Segurança
- Título: Ignorar validação de segurança (não usar em produção)
- Tipo: Booleano
- Descrição: Ao habilitar esta opção, a requisição aceitará qualquer certificado SSL/TLS apresentado pelo servidor, ignorando a validação de segurança. Isso pode ser útil para testar conexões com servidores que usam certificados autoassinados.
Advertência: Não deve ser usado em ambientes de produção. Esta opção reduz a segurança da sua conexão e não deve ser usada em ambientes de produção.
Importância e Uso
Estas configurações avançadas são essenciais para cenários de teste e depuração, mas devem ser usadas com cautela. É crucial não ativá-las em ambientes de produção para evitar riscos de segurança e garantir o funcionamento adequado de suas integrações.
Ao configurar seu conector HTTP, considere cuidadosamente se estas opções avançadas são necessárias para o seu caso específico e esteja ciente dos riscos envolvidos ao ativá-las.