Dien een HTTP-verzoek in via Shopify Flow
Waarom zou u dit gebruiken voor HTTP-verzoeken?
Shopify Flow bevat een ingebouwde actie ‘HTTP-verzoek verzenden’, maar deze is alleen beschikbaar in bepaalde Shopify-abonnementen. Als uw winkel het Basic-abonnement heeft, kunt u nog steeds externe API’s aanroepen door in plaats daarvan Workflow Transactional Email te gebruiken.
U maakt het verzoek eenmalig aan in de app en selecteert het vervolgens in uw workflow met behulp van de actie ‘HTTP-verzoek’. Door het verzoek in de app te bewaren in plaats van in de workflow, worden er nooit inloggegevens in uw Shopify Flow-configuratie opgeslagen en profiteert u bovendien gratis van volledige logboekregistratie van verzoeken en reacties.
Wat u gaat bouwen
Een workflow die om de 10 minuten wordt uitgevoerd, producten opspoort die nog niet in Airtable staan, en deze daarheen verzendt.
Hierbij wordt gebruikgemaakt van:
- Gegevens voor het opslaan van het Airtable-token en de basis-ID
- HTTP-verzoeken om het verzoeksjabloon te definiëren
- De actie „HTTP-verzoek“ in Shopify Flow om deze uit te voeren
- Geschiedenis om het resultaat te controleren
Videogids
Het volledige proces: het aanmaken van de geheimen, het HTTP-verzoek en de workflow. De video heeft geen geluid.
Voordat u begint
- Workflow Transactional Email is geïnstalleerd.
- U hebt toegang tot Shopify Flow.
- U beschikt over een Airtable-database-ID en een tabel die klaar is om productgegevens te ontvangen.
- U beschikt over een Airtable-toegangstoken voor met de juiste machtigingen.
Stap 1: Sla de inloggegevens op als geheimen
In plaats van inloggegevens in het verzoek in te voeren, kunt u deze eenmalig als geheimen opslaan en ernaar verwijzen als {{ secrets.yourKeyName }}. Ze worden in rust versleuteld, zijn hergebruikbaar voor verschillende verzoeken en worden uit uw geschiedenis verwijderd.
Open ‘Geheimen’ en klik op ‘Geheim aanmaken’.

Voer de sleutel, de waarde en een beschrijving in en sla deze vervolgens op.

In dit voorbeeld worden twee geheime gegevens opgeslagen: het persoonlijke toegangstoken en de Airtable-database-ID.
Stap 2: Maak het verzoek aan
In dit voorbeeld wordt gebruikgemaakt van het eindpunt ‘create-records’ van Airtable, dat te vinden is op .
Ga naar HTTP-verzoeken en klik op ‘Verzoek aanmaken’.

Geef het een duidelijke naam, zoals ‘Airtable-productrecord aanmaken’ - dit is de naam waarmee u later in Shopify Flow zult zoeken.
Stel de methode in. Voor het aanmaken van Airtable-records is dat POST.
Voer het eindpunt in het URL-veld in. Het voorvoegsel https:// staat vast; typ dus de rest:
api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products
Deze afbeelding laat zien hoe het Airtable-eindpunt is gekoppeld aan uw database, zodat u het aan uw eigen situatie kunt aanpassen:

Voeg de kolomkoppen toe die Airtable vereist:
Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json
Gebruik in de hoofdtekst van het verzoek een variabele voor de records, zodat Shopify Flow deze kan aanleveren:
{
"records": {{ variables.records }}
}
Airtable verwacht dat deze variabele wordt omgezet in een array met de volgende structuur:
"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
}
}
]
In de volgende stap zullen wij die array in de workflow opbouwen.
Het uiteindelijke verzoek ziet er als volgt uit:



Sla het verzoek op. Het is nu selecteerbaar in de actie ‘HTTP-verzoek’ in Shopify Flow.
Stap 3: Stel de workflow samen
Open Shopify Flow en maak een nieuwe workflow aan.
Kies een trigger op basis van een schema. In dit voorbeeld wordt de trigger om demonstratieredenen elke 10 minuten uitgevoerd - kies voor de productomgeving een redelijke interval.

Haal de producten op die nog niet in Airtable staan. Producten die al zijn verzonden, krijgen in de laatste stap de tag added-to-airtable, zodat deze query deze uitsluit. Zie de referentie voor het queryargument van Shopify:.

Geef de gegevens nu de juiste indeling. De request body verwacht een records-variabele; gebruik daarom de actie ‘Run code’ van Shopify Flow om de opgehaalde producten in die array te gieten.

Stel de stap als volgt in:

De vraag:
query {
getProductData {
id
handle
title
}
}
De code:
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)
};
}
Het uitvoerschema:
"The output of Run Code"
type Output {
"The message returned by the script"
records: String
}
U kunt het resultaat hiernaast bekijken:

Voeg de actie ‘HTTP-verzoek’ toe die door deze app wordt aangeboden.

Kies, wanneer daarom wordt gevraagd, het verzoek dat u hebt opgeslagen - ‘Airtable-productrecord aanmaken’ - sla het vervolgens op en ga terug naar de workflow.

Geef in het veld ‘Variabelen’ van de actie de records door die u zojuist hebt opgemaakt:
{
"records": "{{runCode.records}}"
}

Tot slot doorloopt u de opgehaalde producten en tagt u ze met de tag added-to-airtable, zodat ze bij de volgende uitvoering niet opnieuw worden opgehaald.

Sla de workflow op en schakel deze in.
Stap 4: Controleer of het gelukt is
In de Geschiedenis kunt u zien of het verzoek is geslaagd en wat Airtable heeft teruggestuurd.
wordt weergegeven
Open het item om de verzoekgegevens, de antwoordgegevens en de timing te controleren.

Vanaf de bewerkingspagina van het verzoek brengt de knop ‘Verzoekgeschiedenis’ u direct naar de geschiedenis die is gefilterd op dat ene verzoek.
Naar welke nummers u met de app niet kunt bellen
Door de merchant geconfigureerde verzoeken worden aan een veiligheidscontrole onderworpen. Verzoeken naar interne of privé-netwerkadressen worden geweigerd, met inbegrip van localhost, eindpunten voor cloudmetadata en alles wat naar een privé-adresbereik verwijst - zelfs via een omleiding. Indien u een foutmelding ziet waarin SSRF blocked wordt genoemd, staat de bestemming op die lijst. Verzoeken volgen bovendien maximaal 5 omleidingen en de respons is beperkt tot 10 MB.
Shopify Flow Het systeem beperkt de omvang van een actie-respons tot 50 KB. Indien een testrespons groter is, blokkeert de app het opslaan in plaats van de stap te laten mislukken binnen een live-workflow.
Beste praktijken
- Gebruik duidelijke namen voor verzoeken, zodat ze gemakkelijk te vinden zijn in Shopify Flow.
- Sla API-tokens op als geheime gegevens in plaats van ze in headers in te voeren.
- Zorg ervoor dat de organisatie zich concentreert op de gebieden die de bestemming daadwerkelijk nodig heeft.
- Controleer na elke wijziging de geschiedenis om te verifiëren of het verzoek nog steeds succesvol is.
- Voeg een voorwaarde toe vóór het verzoek, zodat het niet wordt uitgevoerd tijdens lege cycli.
Gerelateerd
- Geheimen - het opslaan van inloggegevens.
- Variabelen en vloeistoffen - de variabeleverwijzing, met inbegrip van overschrijvingen in de hoofdtekst.
- Geschiedenis en probleemoplossing - het lezen van een mislukt verzoek.

