Efetue um pedido HTTP a partir de Shopify Flow
Por que razão utilizar isto para pedidos HTTP?
Shopify Flow inclui uma ação integrada para enviar pedidos HTTP, mas esta só está disponível em determinados planos do Shopify. Se a sua loja estiver no plano Básico, poderá, mesmo assim, aceder a APIs externas utilizando, em vez disso, Workflow Transactional Email.
Cria a solicitação uma vez na aplicação e, em seguida, seleciona-a no seu fluxo de trabalho utilizando a ação «Solicitação HTTP». Manter a solicitação na aplicação, em vez de no fluxo de trabalho, significa também que as credenciais nunca ficam armazenadas na configuração do Shopify Flow e que obtém, gratuitamente, um registo completo das solicitações e respostas.
O que irá desenvolver
Um fluxo de trabalho que é executado a cada 10 minutos, identifica os produtos que ainda não se encontram no Airtable e os envia para lá.
Isto utiliza:
- Segredos para guardar o token e o ID da base do Airtable
- Pedidos HTTP para definir o modelo de pedido
- A ação «Pedido HTTP» disponível em Shopify Flow para a executar
- Histórico para verificar o resultado
Guia em vídeo
Todo o processo: a criação dos segredos, o pedido HTTP e o fluxo de trabalho. O vídeo não tem som.
Antes de começar
- Workflow Transactional Email está instalado.
- Tem acesso a Shopify Flow.
- Dispõe de um ID de base do Airtable e de uma tabela pronta para receber dados de produtos.
- Dispõe de um token de acesso ao Airtable do com as permissões adequadas.
Passo 1: Armazene as credenciais como segredos
Em vez de introduzir as credenciais na solicitação, guarde-as uma vez como «segredos» e faça referência a elas como {{ secrets.yourKeyName }}. Estas ficam encriptadas quando não estão a ser utilizadas, podem ser reutilizadas em várias solicitações e são ocultadas do seu histórico.
Aceda a «Segredos abertos» e clique em «Criar segredo».

Introduza a chave, o valor e uma descrição e, em seguida, guarde.

Este exemplo armazena dois dados confidenciais: o token de acesso pessoal e o ID da base do Airtable.
Passo 2: Criar o pedido
Este exemplo utiliza o endpoint «create-records» do Airtable, disponível em .
Aceda a «Pedidos HTTP» e clique em «Criar pedido».

Atribua-lhe um nome claro, como «Criar registo de produto no Airtable» - é este o nome que irá procurar mais tarde em Shopify Flow.
Defina o método. Para criar registos no Airtable, esse método é o POST.
Introduza o ponto final no campo URL. O prefixo https:// é fixo, pelo que deve introduzir o resto:
api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products
Esta imagem mostra como o ponto de extremidade do Airtable se corresponde à sua base, para que possa adaptá-lo à sua situação:

Adicione os cabeçalhos exigidos pelo Airtable:
Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json
No corpo do pedido, utilize uma variável para os registos, para que o Shopify Flow os possa fornecer:
{
"records": {{ variables.records }}
}
A Airtable espera que essa variável resulte num array com a seguinte estrutura:
"records": [
{
"fields": {
"Title": "Classic White T-Shirt",
"Handle": "classic-white-tshirt",
"Product ID": 1001
}
},
{
"fields": {
"Title": "Eco-Friendly Water Bottle",
"Handle": "eco-water-bottle",
"Product ID": 1002
}
}
]
Iremos criar esse array no fluxo de trabalho no próximo passo.
O pedido final tem o seguinte aspeto:



Guarde o pedido. Agora, este pode ser selecionado na ação «Pedido HTTP» em Shopify Flow.
Passo 3: Criar o fluxo de trabalho
Aceda a Shopify Flow e crie um novo fluxo de trabalho.
Escolha um gatilho baseado numa programação. Este exemplo é executado a cada 10 minutos para fins de demonstração - escolha um intervalo adequado para o ambiente de produção.

Recupere os produtos que ainda não se encontram no Airtable. Os produtos já enviados recebem a etiqueta added-to-airtable na etapa final, pelo que esta consulta os exclui. Consulte a referência aos argumentos de consulta do Shopify em.

Agora, formate os dados. O corpo do pedido espera uma variável do tipo records, pelo que deve utilizar a ação «Executar código» do Shopify Flow para organizar os produtos obtidos nessa matriz.

Configure o passo da seguinte forma:

A consulta:
query {
getProductData {
id
handle
title
}
}
O código:
export default function main(input) {
const records = input.getProductData.map((data) => {
const numericId = parseInt(data.id.replace("gid://shopify/Product/", ""));
return {
fields: {
"Product ID": numericId,
"Title": data.title,
"Handle": data.handle
}
};
});
return {
records: JSON.stringify(records)
};
}
O esquema de saída:
"The output of Run Code"
type Output {
"The message returned by the script"
records: String
}
Pode visualizar o resultado à direita:

Adicione a ação «Pedido HTTP» disponibilizada por esta aplicação.

Quando lhe for solicitado, selecione o pedido que guardou - Criar registo de produto no Airtable - e, em seguida, guarde e regresse ao fluxo de trabalho.

No campo «Variáveis» da ação, introduza os registos que acabou de formatar:
{
"records": "{{runCode.records}}"
}

Por fim, percorra os produtos recuperados e tag-os com a tag added-to-airtable para que a próxima execução não os volte a incluir.

Guarde e ative o fluxo de trabalho.
Passo 4: Confirme se funcionou
Na secção «Histórico», pode verificar se o pedido foi bem-sucedido e qual foi a resposta enviada pelo Airtable.

Abra a entrada para analisar os dados do pedido, os dados da resposta e os tempos.

A partir da página de edição do pedido, o botão «Histórico do pedido» leva-o diretamente para o histórico filtrado de acordo com esse pedido específico.
Para quem a aplicação não lhe permite ligar
Os pedidos configurados pelo lojista passam por um mecanismo de segurança. São recusados os pedidos dirigidos a endereços de rede interna ou privada, incluindo localhost, pontos finais de metadados na nuvem e qualquer endereço que resolva para um intervalo privado - mesmo que seja através de um redirecionamento. Se observar um erro que mencione SSRF blocked, o destino encontra-se nessa lista. As solicitações também seguem, no máximo, 5 redirecionamentos e têm um limite de resposta de 10 MB.
Shopify Flow O próprio sistema limita o tamanho de uma resposta de ação a 50 KB. Se uma resposta de teste for maior do que isso, a aplicação bloqueia o processo de gravação, em vez de permitir que a etapa falhe no âmbito de um fluxo de trabalho ativo.
Melhores práticas
- Utilize nomes de pedidos claros, para que sejam fáceis de encontrar em Shopify Flow.
- Armazene os tokens da API como segredos, em vez de os introduzir nos cabeçalhos.
- Mantenha o corpo focado nos campos de que o destino realmente necessita.
- Verifique o histórico após qualquer alteração, para confirmar se o pedido continua a ser bem-sucedido.
- Adicione uma condição antes do pedido, para que este não seja executado em ciclos vazios.
Relacionado
- Segredos - armazenamento de credenciais.
- Variáveis e Líquido - a referência à variável, incluindo a substituição no corpo do código.
- Histórico e resolução de problemas - leitura de um pedido que falhou.

