Body-Formate und Aufteilung von Arrays

Nicht jedes System sendet JSON, und nicht jede Anfrage bezieht sich auf eine einzelne Sache. Zwei Einstellungen decken beide Fälle ab.

Textformate

Das Format wird aus dem Header Content-Type der Anfrage übernommen. Unabhängig vom Format verwendet Ihre Feldzuordnung stets dieselben Punktpfade.

Inhaltstyp Wird wie folgt analysiert: Typische Absender
application/json JSON Die meisten APIs, n8n, Make, Zapier
application/x-www-form-urlencoded Formularfelder Twilio, PayPal IPN, einfache HTML-Formulare
multipart/form-data Formularfelder und Dateiteile werden zum Dateinamen Formulargeneratoren, Upload-Endpunkte
text/xml, application/xml, *+xml XML Ältere ERP- und Speditionssysteme

Zwei wissenswerte Details:

  • Ein Textkörper, der gültiges JSON ist, wird stets als JSON gelesen, selbst wenn der Absender ihn als etwas anderes kennzeichnet. Viele Tools versenden JSON mit dem Inhaltstyp „Form“, wodurch ihre Funktionsfähigkeit gewährleistet bleibt.
  • Formular- und XML-Inhalte können Felder enthalten, die Sie nicht zugeordnet haben. Das ist kein Problem: Da der Absender die Struktur selbst festlegt, unterliegen diese Inhalte nicht der strengen Prüfung, die für das von Ihnen kontrollierte JSON gilt.
A form-encoded webhook (for example Twilio)bash
curl -X POST https://your-app-url/webhook/ab12cd34 \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "X-Api-Key: your-token" \
  --data-urlencode "From=+15551234567" \
  --data-urlencode "Body=Where is my order?"

# Map fieldOne to: From
# Map fieldTwo to: Body

XML-Attribute

Ein XML-Attribut ist unter seinem Namen verfügbar, dem das Präfix @_ vorangestellt ist; so wird beispielsweise <order id="7"> als order.@_id abgebildet und <order><name>Bob</name></order> als order.name. Die Werte werden als Text übergeben, wodurch lange IDs exakt erhalten bleiben.

Aufteilung von Arrays in Läufe

Wenn eine Anfrage eine Liste enthält - beispielsweise 20 Bestellungen aus einem ERP-System oder eine Reihe von Bestandsaktualisierungen -, möchten Sie in der Regel, dass Ihr Workflow einmal pro Eintrag ausgeführt wird und nicht nur einmal für den gesamten Stapel.

Geben Sie unter „Erweiterte Einstellungen“ -> „Arrays in Durchläufe aufteilen“ den Pfad zum Array an:

Pfad Verwenden Sie dies, wenn
items Das Array ist ein Feld auf oberster Ebene: { "items": [ ... ] }
data.orders Es ist verschachtelt: { "data": { "orders": [ ... ] } }
$ Der Textkörper selbst ist das Array: [ { ... }, { ... } ]
(leer) Aus. Ein Durchlauf pro Anfrage - dies ist die Standardeinstellung.

Jedes Element wird zu einem eigenständigen Durchlauf, wobei **dieses Element als Payload **dient; daher beziehen sich die Zuordnungswege relativ auf das jeweilige Element: Ordnen Sie sku zu, nicht items.0.sku.

One request, three Flow runsjson
{
  "items": [
    { "sku": "ABC-1", "qty": 2 },
    { "sku": "ABC-2", "qty": 1 },
    { "sku": "ABC-3", "qty": 7 }
  ]
}

// Split path: items
// Map fieldOne to: sku
// Map fieldTwo to: qty
// Response: { "runs": 3, "blocked": 0 }

Regeln und Einschränkungen

  • Pro Anfrage sind höchstens 100 Elemente zulässig. Ein größerer Stapel wird abgelehnt, damit ein unkontrollierter Absender Ihren Workflow nicht überlasten kann.
  • Fehlt bei einem Element ein zugeordnetes Feld oder ist es zu groß für Shopify Flow, wird die gesamte Anfrage abgelehnt und es wird nichts gesendet, wobei die Position des fehlerhaften Elements in der Fehlermeldung angegeben wird. Dadurch wird sichergestellt, dass ein Stapel entweder vollständig oder gar nicht verarbeitet wird, anstatt nur teilweise.
  • Elemente, bei denen es sich um einfache Werte und nicht um Objekte handelt, werden als { "value": ... } übermittelt.
  • Die Aufteilung lässt sich nicht mit einer synchronen Antwort kombinieren: Ein Anrufer kann nicht von mehreren Ausführungsinstanzen bedient werden. Siehe Synchrone Reaktion.
  • Wenn Sie einen früheren Lauf aus dem Verlauf erneut ausführen, wird nur dieser einzelne Eintrag erneut gesendet, nicht der gesamte Stapel.

In der Geschichte

Jeder Eintrag stellt einen eigenen Eintrag dar, sodass Sie jeden einzelnen separat einsehen, erneut versuchen und wiedergeben können.