---
title: HTTP
slug: http
description: Learn how to use the HTTP connector to establish a connection between clients and servers for sending and receiving HTTP requests and responses. This document covers configuring parameters like authentication type and advanced options such as request meth
docTags: 
createdAt: 2023-03-13T18:14:54.000Z
---

## &#x20;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.&#x20;
  - **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&#x20;**&#x65; adicionar [`https://console.fluidapi.io/`](https://console.fluidapi.io/)como **redirect\_uri** no aplicativ&#x6F;**.&#x20;**&#x54;ambém é necessário informar o **authorization\_url** e **access\_token\_url&#x20;**&#x70;ara 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.

:::hint{type="warning"}
**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.&#x20;

**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&#x20;*[Fluid Expression Language](docId:0VQVPw6saqz2z1jGp8FwC).

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&#x20;

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).&#x20;

Exemplo

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/t38YnmXVfDMUePWkxeqMz_image.png)

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:

::Image[]{src="https://app.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/WM9FR7yejS9Amcpp97ZyZ_image.png" size="50" width="349" height="263" position="center" darkWidth="349" darkHeight="263" showCaption="false"}

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

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/haam6KqV6R1TkkzwoZxK1_image.png)

&#x20;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`](https://random-data-api.com/api/v2/users)) 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 e&#x6D;*&#x20;@saiba mais*

Assim ficou as configurações na aba `Parametrização`:

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/qVRv3tM232gfFfJQvD8sf_image.png" size="50" width="425" height="686" position="center" darkWidth="425" darkHeight="686" showCaption="false"}

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

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/VrovumH2o0yLEi0y4vSO4_image.png" size="50" width="416" height="565" position="center" darkWidth="416" darkHeight="565" showCaption="false"}

**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:



![log canvas](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/jt8ynhLzG5t1Q_o48u04K_image.png)



![detalhe canvas](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/L0PnMaPKr_IX4mZHaumev_image.png)

**Fluxo de mensagens**

Entrada:

```text
Não possui dados de entrada
```

Saída:

```json
{
    "id": 6650,
    "uid": "23bfa134-b0e4-4407-84fb-e767ef90d478",
    "password": "xbN1OVhPeI",
    "first_name": "Rodolfo",
    "last_name": "Ondricka",
    "username": "rodolfo.ondricka",
    "email": "rodolfo.ondricka@email.com",
    "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`](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;&#x20;

**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 -&#x20;**&#x6F;nde 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`](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&#x20;**&#x73;elecione a opçã&#x6F;**&#x20;Usar requisição&#x20;**&#x65; preencha os campos com os seguintes valores:

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/SYXlkHSWhszDVpHOnXqZL_image.png)

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

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/nJDjNyturGsr0LK34Dq_8_image.png" size="92" width="1157" height="391" position="center" darkWidth="1157" darkHeight="391" showCaption="false"}

Em seguida iremos usar a opção **Cache&#x20;**&#x70;ara 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&#x20;**&#x65; preencha os campos com os seguintes valores:

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/E4kTSe_WmnhjLauGYa_Ko_image.png" size="82" width="786" height="339" position="center" darkWidth="786" darkHeight="339" showCaption="false"}

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&#x20;**&#x65; 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:

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/Br9Qj_mcaQrFMojEjTHBv_image.png" size="96" width="1185" height="346" position="center" darkWidth="1185" darkHeight="346" showCaption="false"}

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

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/hPcA7dYMhBOX6SYzMy_ld_image.png)

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**:

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/_G7HTWoRYasPM0xCZCNHL_image.png)

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

![](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/W0ZqkNAjO9yRl2IyiMU1z_image.png)

**Fluxo**

Com a conexão pronta agora é só criar e configurar o fluxo. Para obter detalhes sobre como criar um fluxo clique e&#x6D;*&#x20;@saiba mais.*

Assim ficou a configuração na aba `Parametrização`:



::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/pm-bQvADWKREhuniB59_Q_image.png" size="50" width="426" height="681" position="center" darkWidth="426" darkHeight="681" showCaption="false"}

Já em `Propriedades`:

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/6zgt8kQUk3qroOfXRb-5g_image.png" size="54" width="420" height="568" position="center" darkWidth="420" darkHeight="568" showCaption="false"}

::Image[]{src="https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/VrovumH2o0yLEi0y4vSO4_image.png" size="50" width="416" height="565" position="center" darkWidth="416" darkHeight="565" showCaption="false"}

**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:

![log canvas](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/J9P5LfmWSPeh_ghkqiOWH_image.png)

![detalhe canvas](https://api.archbee.com/api/optimize/G1NTw6yAi4RDUYbsU8csp/vyJr7RhN711jvAoI3qoLh_image.png)

**Fluxo de mensagens**

Entrada:

```text
Não possui dados de entrada
```

Saída:

```json
{
    "content": {
        "id": "676d0f3e-e7b6-4aa1-a70c-0e4ec23199e7",
        "nameFantasy": "FLYCAM SAFETY4",
        "cpfCnpj": "30810572052",
        "email": "teste@flycam.com.br",
        "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:&#x20;**&#x48;abilite 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.&#x20;**&#xD;**

:::hint{type="warning"}
**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:&#x20;**&#x41;o 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.&#x20;

:::hint{type="warning"}
**Advertência:&#x20;***Não deve ser usado em ambientes de produção.&#x20;*&#x45;sta 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.
