Führen Sie eine HTTP-Anfrage unter Shopify Flow durch

Führen Sie eine HTTP-Anfrage unter Shopify Flow durch

Seite kopieren

HTTP-Anfragen in Shopify Flow senden, auch im Basic-Plan: Anleitung mit Video und Airtable-Beispiel für externe API-Aufrufe.

Warum sollten Sie dies für HTTP-Anfragen verwenden?

Shopify Flow Enthält eine integrierte Aktion zum Senden von HTTP-Anfragen, die jedoch nur in bestimmten Shopify-Plänen verfügbar ist. Wenn Ihr Shop den „Basic“-Plan nutzt, können Sie externe APIs dennoch aufrufen, indem Sie stattdessen Workflow Transactional Email verwenden.

Sie erstellen die Anfrage einmalig in der App und wählen sie anschließend in Ihrem Workflow mithilfe der Aktion „HTTP-Anfrage“ aus. Da die Anfrage in der App und nicht im Workflow gespeichert wird, befinden sich Ihre Anmeldedaten niemals in Ihrer Shopify Flow-Konfiguration, und Sie profitieren kostenlos von einer vollständigen Protokollierung der Anfragen und Antworten.

Was Sie entwickeln werden

Ein Workflow, der alle 10 Minuten ausgeführt wird, Produkte ermittelt, die noch nicht in Airtable vorhanden sind, und diese dorthin übermittelt.

Hierbei wird Folgendes verwendet:

  • Geheimnisse zum Speichern des Airtable-Tokens und der Basis-ID
  • HTTP-Anfragen zur Definition der Anfragvorlage
  • Die Aktion „HTTP-Anfrage“ unter Shopify Flow, um sie auszuführen
  • Verlauf zur Überprüfung des Ergebnisses

Videoanleitung

Der gesamte Ablauf: das Erstellen der Geheimnisse, die HTTP-Anfrage und der Workflow. Das Video hat keinen Ton.

Bevor Sie beginnen

  • Workflow Transactional Email ist installiert.
  • Sie haben Zugriff auf Shopify Flow.
  • Sie verfügen über eine Airtable-Datenbank-ID und eine Tabelle, die für die Aufnahme von Produktdaten bereit ist.
  • Sie verfügen über ein Airtable-Zugriffstoken für () mit den entsprechenden Berechtigungen.

Schritt 1: Speichern Sie die Anmeldedaten als Geheimnisse

Anstatt Anmeldedaten direkt in die Anfrage einzugeben, speichern Sie diese einmalig als „Secrets“ und verweisen Sie darauf als {{ secrets.yourKeyName }}. Diese werden im Ruhezustand verschlüsselt, können für mehrere Anfragen wiederverwendet werden und werden aus Ihrem Verlauf entfernt.

Öffnen Sie „Secrets“ und klicken Sie auf „Geheimnis erstellen“.

Die Seite „Geheimnisse“ mit der Schaltfläche „Geheimnis erstellen“

Geben Sie den Schlüssel, den Wert und eine Beschreibung ein und speichern Sie anschließend.

Eingabe eines geheimen Schlüssels, eines Werts und einer Beschreibung

In diesem Beispiel werden zwei Geheimnisse gespeichert: das persönliche Zugriffstoken und die Airtable-Basis-ID.

Schritt 2: Erstellen Sie die Anfrage

In diesem Beispiel wird der Endpunkt „create-records“ von Airtable unter verwendet.

Öffnen Sie den Bereich „HTTP-Anfragen“ und klicken Sie auf „Anfrage erstellen“.

Die Seite „HTTP-Anfragen“ mit der Schaltfläche „Anfrage erstellen“

Geben Sie ihm einen eindeutigen Namen, beispielsweise „Airtable-Produktdatensatz erstellen“ - danach werden Sie später in Shopify Flow suchen.

Legen Sie die Methode fest. Zum Erstellen von Airtable-Datensätzen ist dies „POST“.

Geben Sie den Endpunkt in das URL-Feld ein. Das Präfix https:// ist fest vorgegeben; geben Sie daher den Rest ein:

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

Dieses Bild veranschaulicht, wie der Airtable-Endpunkt Ihrer Datenbank zugeordnet ist, sodass Sie ihn an Ihre eigenen Anforderungen anpassen können:

Wie die Airtable-Endpunkt-URL der Datenbank zugeordnet wird

Fügen Sie die von Airtable benötigten Kopfzeilen hinzu:

Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json

Verwenden Sie im Request-Body eine Variable für die Datensätze, damit Shopify Flow diese bereitstellen kann:

{
  "records": {{ variables.records }}
}

Airtable geht davon aus, dass diese Variable zu einem Array mit folgender Struktur aufgelöst wird:

"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
    }
  }
]

Dieses Array werden wir im nächsten Schritt im Workflow erstellen.

Die fertige Anfrage sieht wie folgt aus:

Die fertige Airtable-HTTP-Anfrage:

Die Seite „HTTP-Anfragen“, auf der eine gespeicherte Anfrage mit ihrer Methode und ihrer URL aufgeführt ist
Unter „HTTP-Anfragen“ werden alle gespeicherten Anfragen aufgelistet; mit „Anfrage erstellen“ wird eine neue Anfrage gestartet.
Der HTTP-Anforderungseditor mit Methode, URL, Headern und Hauptteil
Die Anfrage: Methode, URL, Header und Hauptteil, wobei in jedem dieser Elemente Variablen und Geheimnisse verwendet werden können.

Speichern Sie die Anfrage. Sie steht nun in der Aktion „HTTP-Anfrage“ unter Shopify Flow zur Auswahl.

Schritt 3: Erstellen Sie den Workflow

Öffnen Sie „Shopify Flow“ und erstellen Sie einen neuen Workflow.

Wählen Sie einen zeitgesteuerten Trigger. In diesem Beispiel wird der Vorgang zu Demonstrationszwecken alle 10 Minuten ausgeführt - wählen Sie für den Produktivbetrieb einen sinnvollen Zeitabstand.

Ein zeitgesteuerter Trigger in Shopify Flow

Rufen Sie die Produkte ab, die noch nicht in Airtable vorhanden sind. Bereits gesendete Produkte erhalten im letzten Schritt das Tag added-to-airtable, sodass diese Abfrage sie ausschließt. Siehe die Referenz zu den Abfrageargumenten von von Shopify unter.

Abrufen von Produkten ohne Tags in Shopify Flow

Formatieren Sie nun die Daten. Der Request-Body erwartet ein Array mit dem Namen records; verwenden Sie daher die Shopify Flow-Aktion „Code ausführen“, um die abgerufenen Produkte in dieses Array umzuwandeln.

Hinzufügen der Aktion „Code ausführen“

Konfigurieren Sie den Schritt wie folgt:

Konfigurieren des Schritts „Code ausführen“

Die Anfrage:

query {
  getProductData {
    id
    handle
    title
  }
}

Der 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)
  };
}

Das Ausgabeschema:

"The output of Run Code"
type Output {
  "The message returned by the script"
  records: String
}

Rechts können Sie eine Vorschau des Ergebnisses einsehen:

Vorschau der Ausgabe des „Run“-Codes

Fügen Sie die von dieser App bereitgestellte Aktion „HTTP-Anfrage“ hinzu.

Hinzufügen der Aktion „HTTP-Anfrage“

Wählen Sie, wenn Sie dazu aufgefordert werden, die von Ihnen gespeicherte Anfrage - „Airtable-Produkteintrag erstellen“ - aus, speichern Sie anschließend und kehren Sie zum Workflow zurück.

Auswahl der gespeicherten HTTP-Anfrage

Übergeben Sie im Feld „Variablen“ der Aktion die Datensätze, die Sie soeben formatiert haben:

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

Übergabe der formatierten Datensätze an die Anfrage-

Zuletzt durchlaufen Sie die abgerufenen Produkte und taggen sie mit added-to-airtable, damit sie beim nächsten Durchlauf nicht erneut berücksichtigt werden.

Kennzeichnung der Produkte nach dem Versand

Speichern Sie den Workflow und aktivieren Sie ihn.

Schritt 4: Überprüfen Sie, ob es funktioniert hat

Im Verlauf können Sie sehen, ob die Anfrage erfolgreich war und welche Antwort Airtable zurückgesendet hat.

Die Verlaufsliste, in der die Anfrage angezeigt wird

Öffnen Sie den Eintrag, um die Anforderungsdaten, die Antwortdaten und den zeitlichen Ablauf zu überprüfen.

Die Detailansicht der Anfrage

Von der Bearbeitungsseite der Anfrage aus gelangen Sie über die Schaltfläche „Anfrageverlauf“ direkt zum Verlauf, der auf diese eine Anfrage gefiltert ist.

Wen Sie mit dieser App nicht anrufen können

Vom Händler konfigurierte Anfragen durchlaufen eine Sicherheitsprüfung. Anfragen an interne oder private Netzwerkadressen werden abgelehnt, darunter localhost, Cloud-Metadaten-Endpunkte sowie alle Adressen, die zu einem privaten Adressbereich aufgelöst werden - selbst über eine Weiterleitung. Wenn Sie eine Fehlermeldung sehen, in der SSRF blocked erwähnt wird, befindet sich das Ziel auf dieser Liste. Anfragen dürfen zudem höchstens 5 Weiterleitungen durchlaufen, und die Antwortgröße ist auf 10 MB begrenzt.

Shopify Flow Das System begrenzt die Größe einer Aktion auf 50 KB. Ist eine Testantwort größer, blockiert die App das Speichern, anstatt zuzulassen, dass der Schritt innerhalb eines Live-Workflows fehlschlägt.

Bewährte Verfahren

  • Verwenden Sie aussagekräftige Namen für Ihre Anfragen, damit diese in Shopify Flow leicht zu finden sind.
  • Speichern Sie API-Token als Geheimnisse, anstatt sie in Header einzugeben.
  • Konzentrieren Sie sich auf die Felder, die das Ziel tatsächlich benötigt.
  • Überprüfen Sie nach jeder Änderung den Verlauf, um sicherzustellen, dass die Anfrage weiterhin erfolgreich ist.
  • Fügen Sie vor der Anforderung eine Bedingung ein, damit diese nicht bei leeren Zyklen ausgeführt wird.

Verwandte Themen