Doe een HTTP-verzoek via Shopify Flow

Doe een HTTP-verzoek via Shopify Flow

Pagina kopiëren

Doe HTTP-verzoeken in Shopify Flow via Workflow Transactional Email, ook op het Basic-abonnement. Inclusief werkend voorbeeld met Airtable.

Waarom zou u dit gebruiken voor HTTP-verzoeken?

Shopify Flow bevat een ingebouwde actie ‘HTTP-verzoek verzenden’, maar deze is alleen beschikbaar bij 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 inloggegevens nooit in uw Shopify Flow-configuratie opgeslagen en beschikt u bovendien gratis over volledige logboekregistratie van verzoeken en antwoorden.

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 van met de juiste machtigingen.

Stap 1: Sla de inloggegevens op als geheime gegevens

In plaats van inloggegevens in het verzoek in te voeren, kunt u deze eenmalig als geheimen opslaan en ernaar verwijzen via {{ secrets.yourKeyName }}. Deze worden in rust versleuteld, zijn herbruikbaar voor meerdere verzoeken en worden uit uw geschiedenis verwijderd.

Open ‘Geheimen’ en klik op ‘Geheim aanmaken’.

De pagina ‘Geheimen’ met de knop ‘Geheim aanmaken’

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

Een geheime sleutel, waarde en beschrijving invoeren

In dit voorbeeld worden twee geheime gegevens opgeslagen: het persoonlijke toegangstoken en het Airtable-database-ID.

Stap 2: Maak de aanvraag aan

In dit voorbeeld wordt gebruikgemaakt van , het eindpunt voor het aanmaken van records van Airtable:.

Ga naar HTTP-verzoeken en klik op ‘Verzoek aanmaken’.

De pagina ‘HTTP-verzoeken’ met de knop ‘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, dus typ de rest:

api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products

Deze afbeelding laat zien hoe het Airtable-eindpunt is gekoppeld aan uw database, zodat u dit aan uw eigen situatie kunt aanpassen:

Hoe de URL van het Airtable-eindpunt wordt gekoppeld aan de basis

Voeg de kopteksten 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:

Het voltooide Airtable HTTP-verzoek

De pagina ‘HTTP-verzoeken’ waarop een opgeslagen verzoek wordt weergegeven, samen met de methode en de URL
Onder ‘HTTP-verzoeken’ worden alle opgeslagen verzoeken weergegeven; met ‘Verzoek aanmaken’ start u een nieuw verzoek.
De HTTP-verzoekeditor met methode, URL, headers en body
Het verzoek: methode, URL, headers en body, waarbij in elk van deze onderdelen variabelen en geheime gegevens kunnen worden gebruikt.

Sla het verzoek op. Het kan nu worden geselecteerd 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 productieomgeving een redelijke interval.

Een geplande trigger in Shopify Flow

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 queryargumenten van Shopify op.

Het ophalen van producten zonder tags in Shopify Flow

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.

De actie ‘Code uitvoeren’ toevoegen

Stel de stap als volgt in:

De stap ‘Code uitvoeren’ configureren

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:

Een voorbeeld bekijken van de uitvoer van de code „Run“

Voeg de actie „HTTP-verzoek“ toe die door deze app wordt aangeboden.

De actie ‘HTTP-verzoek’ toevoegen

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

Het opgeslagen HTTP-verzoek selecteren

Geef in het veld ‘Variabelen’ van de actie de records door die u zojuist hebt opgemaakt:

{
  "records": "{{runCode.records}}"
}

De opgemaakte records doorgeven aan de verzoek-

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

Het labelen van de producten na verzending

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.

De lijst met de geschiedenis waarin de aanvraag wordt weergegeven

Open het item om de verzoekgegevens, de antwoordgegevens en de timing te bekijken.

De detailweergave van het verzoek

Vanaf de bewerkingspagina van het verzoek brengt de knop ‘Verzoekgeschiedenis’ u rechtstreeks 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 deze 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 tijdens lege cycli wordt uitgevoerd.

Gerelateerd