Enviar solicitação HTTP
A ação Enviar solicitação HTTP conecta o fluxo de trabalho a um servidor web ou URL e envia solicitações HTTP.
Depois de enviar uma solicitação HTTP, o Flow espera no máximo 30 segundos por um código de resposta HTTP. Caso não receba uma resposta após esse período, o app fecha a conexão e mais tarde envia novamente a solicitação.
Campos
A ação Send HTTP request ("Enviar solicitação HTTP") apresenta os campos a seguir.
Campo | Descrição |
---|---|
Método HTTP | O método de solicitação HTTP para enviar. A ação Send HTTP request ("Enviar solicitação HTTP") é compatível com os seguintes métodos:
|
URL | O URL do servidor para o qual a solicitação HTTP é enviada. |
Cabeçalhos | O par de chave-valor da solicitação HTTP. É possível inserir vários deles. |
Corpo | O conteúdo a ser enviado para o servidor. |
Em caso de erro do cliente (resposta 4XX) | Ao receber um código de resposta indicando um erro do cliente, o Flow vai:
|
Em caso de erro no servidor (resposta 5XX ou 429) | Ao receber um código de resposta indicando um erro no servidor, o Flow vai:
|
Dados retornados
Para acessar os dados retornados nas etapas que seguem a ação, use a variável denominada sendHttpRequest
, que inclui todos os detalhes da resposta HTTP. Opcionalmente, use uma ação Run code ("Executar código") para analisar o body
da resposta para uso em etapas subsequentes do fluxo de trabalho, como no exemplo abaixo.
Se uma ação Send HTTP request ("Enviar solicitação HTTP") for usada várias vezes em um único fluxo de trabalho, um número será adicionado ao nome da variável. Por exemplo, em um fluxo de trabalho que usa a ação Send HTTP request ("Enviar solicitação HTTP") duas vezes, a primeira variável para os dados retornados será sendHttpRequest
, e a segunda variável será sendHttpRequest1
. Vale lembrar que o nome não pode ser personalizado.
Códigos de resposta
Veja na tabela a seguir uma descrição de como o Flow processa o código de resposta HTTP depois que recebe uma resposta.
Código de resposta HTTP | Como o Flow processa o código de resposta |
---|---|
Sucesso 2XX ou 3XX | O Flow marca a solicitação HTTP como bem-sucedida e realiza as próximas ações do fluxo de trabalho. |
Erros 4XX, 5XX e 429 | Dependendo de como a ação for configurada, o Flow vai:
| Outro código de resposta | Se a resposta retornar um código não descrito nesta tabela ou expirar ao tentar executar as ações de novo, o Flow marcará a solicitação HTTP como falha, falhará na execução do fluxo de trabalho e não tomará ações subsequentes para esse fluxo de trabalho. |
Segredos do app
Chaves secretas são usadas para armazenar com segurança informações confidenciais para uso na ação Send HTTP request ("Enviar solicitação HTTP"), como tokens de acesso ou senhas. As chaves secretas são criadas e gerenciadas na página Flow > Configurações. Uma chave secreta contém um identificador, um valor e uma descrição. Faça referência à chave secreta como uma variável Liquid (como {{secrets.handle}}
) ou na opção Adicionar chave secreta ao configurar os campos "URL", "Valor do cabeçalho" ou "Corpo". Os valores das chaves secretas nunca são visíveis na interface do Flow e são ocultados dos logs de execução do fluxo de trabalho.
Acionadores
É possível usar a ação Send HTTP request ("Enviar solicitação HTTP") nos fluxos de trabalho.
Exemplos
Exemplo 1: envie uma solicitação HTTP para um serviço externo
Neste exemplo, use o Flow para enviar uma solicitação HTTP a um serviço externo.
Antes de começar, configure um serviço online que receba solicitações HTTP e armazene os dados dessas solicitações para fins de teste, como o Request Catcher. Lembre-se de ter atenção ao enviar dados confidenciais (como senhas e chaves de API) a serviços de terceiros.
Etapas:
Escolha o acionador Product status updated ("Status do produto atualizado"), que permite alterar o status de um item para testar o fluxo de trabalho.
Adicione uma ação Send HTTP Request ("Enviar solicitação HTTP") ao fluxo de trabalho e conecte-a ao acionador. Em seguida, clique na etapa Send HTTP Request ("Enviar solicitação HTTP") para abrir o painel de configuração.
- No campo HTTP Method ("Método HTTP"), insira
POST
. - No campo URL, insira o URL para testar, como
https://yourFlowTest.requestcatcher.com/test
. - Na seção Headers ("Cabeçalhos"), insira um cabeçalho com a Key ("Chave")
Content-Type
e o Value ("Valor")text/plain
. - Na seção Corpo, insira
{{product.title}}
e{{product.status}}
para enviar o título e o status atualizado do produto pelo acionador.
- No campo HTTP Method ("Método HTTP"), insira
Ative o fluxo de trabalho.
Teste-a alterando o status de um produto, como de Rascunho para Ativo.
Observe os resultados no serviço de teste externo, como o
https://yourFlowTest.requestcatcher.com/
neste exemplo.
Exemplo 2: use a ação Run code ("Executar código") para analisar uma resposta HTTP
Neste exemplo, use o Flow para enviar uma solicitação HTTP a um serviço externo e uma ação Run code ("Executar código") para analisar o body
da resposta HTTP para uso em etapas subsequentes do fluxo de trabalho.
Antes de começar, escolha um serviço da web que receba solicitações HTTP e retorne dados, como o Postman Echo. Lembre-se de tomar o máximo de cuidado ao enviar dados confidenciais (como senhas e chaves de API) para serviços terceirizados.
Etapas:
- Escolha o acionador Product status updated ("Status do produto atualizado"), que permite alterar o status de um item para testar o fluxo de trabalho.
- Adicione uma ação Send HTTP Request ("Enviar solicitação HTTP") ao fluxo de trabalho e conecte-a ao acionador. Em seguida, clique na etapa Send HTTP Request ("Enviar solicitação HTTP") para abrir o painel de configuração.
- No campo HTTP Method ("Método HTTP"), insira
POST
. - No campo URL, insira o URL para testar, como
https://postman-echo.com/post
. - Na seção Headers ("Cabeçalhos"), insira um cabeçalho com a Key ("Chave")
Content-Type
e o Value ("Valor")application/json
. - Na seção Corpo, insira o JSON de exemplo para retornar ao fluxo de trabalho, tal como: ``` { "productTitle": "{{product.title}}", "productStatus": "{{product.status}}" }
- No campo HTTP Method ("Método HTTP"), insira
3. Adicione uma ação **Run code** ("Executar código") ao fluxo de trabalho e conecte-o à ação **Send HTTP request** ("Enviar solicitação HTTP"). Em seguida, clique na etapa **Run code** ("Executar código") para abrir o painel de configuração.
- No campo **Definir entradas**, inclua o `body` retornado pelo objeto `sendHTTPrequest`, tal como: ```
query{
sendHttpRequest {
body
}
}
- No campo **Definir saídas**, definido no esquema de saída, tal como: ```
type Output { productTitle: String! productStatus: String! }
- No campo **Escrever código**, analise a resposta usando o método `JSON.parse` e verifique se os dados retornados correspondem à forma e aos tipos definidos no esquema de saída, tal como: ```
export default function main(input) {
const body = JSON.parse(input.sendHttpRequest.body);
console.log("body is", body);
return {
productTitle: body.data.productTitle,
productStatus: body.data.productStatus
}
}
- Adicione a ação Log output ("Saída de registro") ao fluxo de trabalho e conecte-a à ação Run code ("Executar código"). Em seguida, clique na etapa Run code ("Executar código") para abrir o painel de configuração.
- No campo Saída, inclua as variáveis retornadas pela etapa Executar código, tal como: ``` Title from HTTP response: {{runCode.productTitle}} Status from HTTP response: {{runCode.productStatus}}
5. Ative o fluxo de trabalho.
6. Teste-a alterando o status de um produto, como de **Rascunho** para **Ativo**.
7. Observe a execução resultante na página **[Flow /Execuções recentes](https://admin.shopify.com/apps/flow/activity)** e veja que os valores na etapa **Saída do log** correspondem aos valores retornados da saída **Enviar solicitação HTTP**.
## Modelos {#templates}
### Notificar o provedor de processamento sobre futuros pedidos
Envie uma solicitação HTTP para o provedor de processamento quando houver pedidos com a tag "Warehouse" ("Depósito") no Order Tagger. [Ver modelo](https://shopify.com/admin/apps/flow/editor/templates/e99f15ae-454b-443b-b6c7-7dc4b2afc129).
### Enviar novos pedidos para o Airtable
Envie pedidos para o Airtable quando um pedido for criado. [Ver modelo](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-ab85-7157-90e2-7de1149201a7)
### Enviar todos os produtos existentes e novos para o Airtable
A cada 10 minutos, encontre produtos que não foram enviados para o Airtable (por tag) e envie-os. [Ver modelo](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-a789-7f9d-a64e-a9be2b544e82)
### Atualizar produtos em lotes a partir de dados de produtos armazenados no Airtable
Atualize produtos em lotes a partir dos dados de produtos que estão armazenados no Airtable. [Ver modelo](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-b499-7384-a418-919d752d7a8b)
### Notificar clientes sobre cartões-presente expirados usando o SendGrid
Todos os dias, receba todos os cartões-presente que vencem em sete dias e envie e-mails para os clientes usando o SendGrid. [Ver modelo](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-a4b9-7ff0-8181-9de43d95ae1e)
### Enviar e-mail usando o SendGrid quando o cliente fizer um pedido de um item personalizado
Envie um e-mail transacional usando o SendGrid quando um cliente fizer um pedido de um item personalizado. [Ver modelo](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-adc1-7139-9644-43ba3a4c71eb)