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’.

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 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’.

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

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

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:

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 geheimen kunnen worden gebruikt.

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.

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 het queryargument van Shopify:.

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 tagt 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 geschiedenisgegevens waarin de verzoek wordt weergegeven

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

De detailweergave van het verzoek

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