Skapa en HTTP-förfrågan från Shopify Flow

Skapa en HTTP-förfrågan från Shopify Flow

Kopiera sidan

Skicka HTTP-förfrågningar till externa API:er från Shopify Flow, även på Shopify Basic. Guide med video och ett exempel med Airtable.

Varför använda detta för HTTP-förfrågningar?

Shopify Flow har en inbyggd åtgärd för att skicka HTTP-förfrågningar, men den är endast tillgänglig i vissa Shopify-abonnemang. Om din butik har abonnemanget Basic kan du ändå anropa externa API:er genom att istället använda Workflow Transactional Email.

Du skapar begäran en gång i appen och väljer sedan ut den i ditt arbetsflöde med hjälp av åtgärden ”HTTP Request”. Att förvara begäran i appen istället för i arbetsflödet innebär också att inloggningsuppgifterna aldrig lagras i din Shopify Flow-konfiguration, och att du får fullständig loggning av begäranden och svar helt gratis.

Vad du kommer att bygga

Ett arbetsflöde som körs var 10:e minut, hittar produkter som ännu inte finns i Airtable och skickar dem dit.

Här används:

  • Tips för att lagra Airtable-token och bas-ID
  • HTTP Requestr för att definiera begärandemallen
  • HTTP Request-åtgärden i Shopify Flow för att köra den
  • Historik för att kontrollera resultatet

Videoguide

Hela upplägget: att skapa hemligheterna, HTTP-förfrågan och arbetsflödet. Videon har inget ljud.

Innan du börjar

  • Workflow Transactional Email är installerat.
  • Du har tillgång till Shopify Flow.
  • Du har ett Airtable-bas-ID och en tabell som är redo att ta emot produktdata.
  • Du har en Airtable-åtkomsttoken med rätt behörigheter.

Steg 1: Spara inloggningsuppgifterna som hemligheter

I stället för att skriva in inloggningsuppgifterna direkt i begäran kan du spara dem en gång som hemligheter och hänvisa till dem med {{ secrets.yourKeyName }}. De krypteras när de lagras, kan återanvändas i flera begäranden och tas bort från din historik.

Öppna ”Hemligheter” och klicka på ”Skapa hemlighet”.

Sidan ”Hemligheter” med knappen ”Skapa hemlighet”

Ange nyckeln, värdet och en beskrivning, och spara sedan.

Ange en hemlig nyckel, ett värde och en beskrivning

I det här exemplet lagras två hemligheter: den personliga åtkomsttoken och Airtable-basens ID.

Steg 2: Skapa begäran

I det här exemplet används Airtables create-records-ändpunkt.

Öppna ”HTTP Requests” och klicka på ”Skapa begäran”.

Sidan ”HTTP Request” med knappen ”Skapa begäran”

Ge den ett tydligt namn, till exempel ”Skapa Airtable-produktpost” - det är det namnet du kommer att söka efter senare i Shopify Flow.

Ange metoden. För att skapa Airtable-poster används metoden POST.

Ange slutpunkten i URL-fältet. Prefixet https:// är fast, så skriv in resten:

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

Den här bilden visar hur Airtable-ändpunkten är kopplad till din databas, så att du kan anpassa den efter dina egna behov:

Hur Airtable-ändpunktens URL kopplas till basen

Lägg till de rubriker som Airtable kräver:

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

Använd en variabel för posterna i förfrågans huvudtext så att Shopify Flow kan tillhandahålla dem:

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

Airtable förväntar sig att variabeln ska omvandlas till en array med följande struktur:

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

Vi kommer att skapa den matrisen i arbetsflödet i nästa steg.

Den färdiga förfrågan ser ut så här:

Den genomförda Airtable-HTTP-förfrågan

Sidan ”HTTP Requests” visar en sparad begäran med dess metod och URL
Under ”HTTP Requests” visas alla sparade förfrågningar; med ”Create request” skapar du en ny.
HTTP-förfrågningsredigeraren med metod, URL, rubriker och huvudtext
Begäran: metod, URL, rubriker och huvudtext, där var och en kan innehålla variabler och hemliga uppgifter.

Spara begäran. Den går nu att välja i åtgärden ”HTTP Request” i Shopify Flow.

Steg 3: Skapa arbetsflödet

Öppna Shopify Flow och skapa ett nytt arbetsflöde.

Välj en schemalagd utlösare. I det här exemplet körs skriptet var 10:e minut i demonstrationssyfte - välj en lämplig intervall för produktionsmiljön.

En schemalagd utlösare i Shopify Flow

Hämta de produkter som ännu inte finns i Airtable. Produkter som redan har skickats får taggen added-to-airtable i det sista steget, så den här frågan utesluter dem. Se Shopifys referens för frågeargument.

Hämta produkter utan taggar i Shopify Flow

Formatera nu data. Förfrågans huvuddel förväntar sig en variabel av typen records, så använd åtgärden ”Kör kod” i Shopify Flow för att omforma de hämtade produkterna till den här arrayen.

Lägga till åtgärden ”Kör kod”

Konfigurera steget på följande sätt:

Konfigurera steget ”Kör kod”

Frågan:

query {
  getProductData {
    id
    handle
    title
  }
}

Koden:

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

Utdataschemat:

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

Du kan förhandsgranska resultatet till höger:

Förhandsgranska utdata från ”Kör kod”

Lägg till åtgärden ”HTTP Request” som tillhandahålls av den här appen.

Lägga till åtgärden ”HTTP Request”

När du blir ombedd att göra det väljer du den begäran du har sparat - Skapa Airtable-produktpost - och sparar sedan och går tillbaka till arbetsflödet.

Välja den sparade HTTP-förfrågan

I fältet ”Variabler” i åtgärden ska du ange de poster som du just har formaterat:

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

Överföring av de formaterade posterna till begäran

Slutligen går du igenom de hämtade produkterna och märker dem med added-to-airtable, så att de inte hämtas igen vid nästa körning.

Märka produkterna efter att de har skickats

Spara och aktivera arbetsflödet.

Steg 4: Kontrollera att det fungerade

I historiken kan du se om förfrågan lyckades och vad Airtable skickade tillbaka.

Historiklistan som visar begäran

Öppna posten för att granska begäranddata, svarsdata och tidsuppgifterna.

Detaljvyn för begäran

Från redigeringssidan för en begäran tar knappen ”Begäranhistorik” dig direkt till historiken, filtrerad efter just den begäran.

Vad appen inte låter dig ringa till

Förfrågningar som konfigurerats av handlaren passerar genom en säkerhetskontroll. Förfrågningar till interna eller privata nätverksadresser avvisas, inklusive localhost, slutpunkter för molnmetadata och allt som pekar på ett privat adressintervall - även via en omdirigering. Om du ser ett felmeddelande som nämner SSRF blocked finns målet med på den listan. Förfrågningar får dessutom följa högst 5 omdirigeringar och svaret får inte överstiga 10 MB.

Shopify Flows system begränsar storleken på ett åtgärdssvar till 50 KB. Om ett testsvar är större än så blockerar appen sparandet, istället för att låta steget misslyckas i ett aktivt arbetsflöde.

Bästa praxis

  • Använd tydliga namn på förfrågningarna så att de är lätta att hitta i Shopify Flow.
  • Spara API-token som hemliga uppgifter istället för att skriva in dem i rubrikerna.
  • Se till att resurserna riktas mot de områden som målet faktiskt behöver.
  • Kontrollera historiken efter varje ändring för att bekräfta att begäran fortfarande går igenom.
  • Lägg till ett villkor före begäran så att den inte körs under tomgångscykler.

Relaterat