Send en HTTP-forespørsel fra Shopify Flow

Send en HTTP-forespørsel fra Shopify Flow

Kopier side

Send HTTP-forespørsler til eksterne API-er fra Shopify Flow, også på Shopify Basic. Trinnvis veiledning med video og Airtable-eksempel.

Hvorfor bruke dette til HTTP-forespørsler?

Shopify Flow har en innebygd handling for å sende HTTP-forespørsler, men denne er kun tilgjengelig på visse Shopify-abonnementer. Hvis butikken din har Basic-abonnementet, kan du likevel kalle opp eksterne API-er ved å bruke Workflow Transactional Email i stedet.

Du oppretter forespørselen én gang i appen, og velger den deretter i arbeidsflyten ved hjelp av handlingen HTTP Request. Å oppbevare forespørselen i appen i stedet for i arbeidsflyten betyr også at påloggingsopplysningene aldri lagres i Shopify Flow-konfigurasjonen din, og at du får full loggføring av forespørsler og svar helt gratis.

Hva du skal bygge

En arbeidsflyt som kjører hvert 10. minutt, finner produkter som ennå ikke finnes i Airtable, og sender dem dit.

Dette bruker:

  • Hemmeligheter for å lagre Airtable-tokenet og base-ID-en
  • HTTP Requestr for å definere forespørselsmalen
  • HTTP Request-handlingen i Shopify Flow for å kjøre den
  • Historikk for å sjekke resultatet

Videoveiledning

Hele oppsettet: oppretting av hemmeligheter, HTTP-forespørselen og arbeidsflyten. Videoen har ikke lyd.

Før du begynner

  • Workflow Transactional Email er installert.
  • Du har tilgang til Shopify Flow.
  • Du har en Airtable-base-ID og en tabell som er klar til å motta produktdata.
  • Du har et Airtable-tilgangstoken med de riktige tillatelsene.

Trinn 1: Lagre påloggingsopplysningene som hemmeligheter

I stedet for å skrive inn påloggingsopplysningene direkte i forespørselen, bør du lagre dem én gang som hemmeligheter og henvise til dem som {{ secrets.yourKeyName }}. De er kryptert når de lagres, kan gjenbrukes på tvers av forespørsler og blir fjernet fra logghistorikken din.

Åpne Hemmeligheter og klikk på Opprett hemmelighet.

Siden «Hemmeligheter» med knappen «Opprett hemmelighet»

Skriv inn nøkkelen, verdien og en beskrivelse, og lagre deretter.

Angi en hemmelig nøkkel, verdi og beskrivelse

I dette eksemplet lagres to hemmeligheter: det personlige tilgangstokenet og Airtable-base-ID-en.

Trinn 2: Opprett forespørselen

I dette eksemplet brukes Airtables «create-records»-endepunkt.

Åpne «HTTP Requests» og klikk på Opprett forespørsel.

Siden «HTTP Requestr» med knappen «Opprett forespørsel»

Gi den et tydelig navn, for eksempel Opprett Airtable-produktoppføring - det er dette du skal lete etter senere i Shopify Flow.

Angi metoden. For å opprette Airtable-poster er det POST.

Skriv inn endepunktet i URL-feltet. Prefikset https:// er fast, så skriv inn resten:

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

Dette bildet viser hvordan Airtable-endepunktet er tilknyttet basen din, slik at du kan tilpasse det etter dine egne behov:

Hvordan Airtable-endepunktets URL tilordnes basen

Legg til overskriftene som Airtable krever:

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

I forespørselsteksten må du bruke en variabel for postene, slik at Shopify Flow kan levere dem:

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

Airtable forventer at denne variabelen skal være en matrise med følgende 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 skal opprette denne matrisen i arbeidsflyten i neste trinn.

Den ferdige forespørselen ser slik ut:

Den fullførte Airtable-HTTP-forespørselen

Siden «HTTP Requests» viser en lagret forespørsel med tilhørende metode og URL
«HTTP Requests» viser alle lagrede forespørsler; «Create request» oppretter en ny.
HTTP-forespørselsredigereren med metode, URL, overskrifter og brødtekst
Forespørselen: metode, URL, overskrifter og brødtekst, hvor hver av disse kan inneholde variabler og hemmelige opplysninger.

Lagre forespørselen. Den kan nå velges i HTTP Request-handlingen i Shopify Flow.

Trinn 3: Opprett arbeidsflyten

Åpne Shopify Flow og opprett en ny arbeidsflyt.

Velg en tidsplanbasert utløser. I dette eksemplet kjøres oppgaven hvert 10. minutt for demonstrasjonsformål - velg en passende frekvens for produksjonsmiljøet.

En planlagt utløser i Shopify Flow

Hent produktene som ennå ikke finnes i Airtable. Produkter som allerede er sendt, får merket added-to-airtable i det siste trinnet, så denne spørringen utelukker dem. Se Shopifys referanse for spørringsargumenter.

Hente produkter uten merkelapper i Shopify Flow

Nå skal du formatere dataene. Forespørselsteksten forventer en records-variabel, så bruk Shopify Flow-handlingen Kjør kode for å organisere de hentede produktene i denne matrisen.

Legge til handlingen «Kjør kode»

Konfigurer trinnet slik:

Konfigurere trinnet «Kjør kode»

Spørsmålet:

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

Utdataskjemaet:

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

Du kan se en forhåndsvisning av resultatet til høyre:

Forhåndsvisning av utdata fra «Kjør»-kommandoen

Legg til HTTP Request-handlingen som tilbys av denne appen.

Legge til handlingen HTTP Request

Når du blir bedt om det, velger du forespørselen du har lagret - Opprett Airtable-produktoppføring - og deretter lagrer du og går tilbake til arbeidsflyten.

Velge den lagrede HTTP-forespørselen

I feltet «Variabler» i handlingen skal du overføre postene du nettopp har formatert:

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

Overføring av de formaterte postene til forespørselen

Til slutt går du gjennom de hentede produktene og merker dem med added-to-airtable, slik at de ikke blir hentet inn på nytt ved neste kjøring.

Merking av produktene etter utsendelse

Lagre og aktiver arbeidsflyten.

Trinn 4: Kontroller at det fungerte

I Historikk kan du se om forespørselen lyktes og hva Airtable sendte tilbake.

Historikklisten som viser forespørselen

Åpne oppføringen for å se på forespørselsdataene, svardataene og tidsopplysningene.

Detaljvisningen for forespørselen

Fra redigeringssiden for forespørselen fører knappen Forespørselshistorikk deg direkte til historikken, som er filtrert etter akkurat denne forespørselen.

Hvem du ikke kan ringe via appen

Forespørsler som er konfigurert av forhandleren, går gjennom en sikkerhetskontroll. Forespørsler til interne eller private nettverksadresser avvises, inkludert localhost, endepunkter for metadata i skyen og alt som løser seg til et privat adresseområde - selv via en omdirigering. Hvis du ser en feilmelding som nevner SSRF blocked, står målet på denne listen. Forespørsler følger også maksimalt 5 omdirigeringer, og svaret er begrenset til 10 MB.

Shopify Flows egen begrensning for et handlingssvar er 50 KB. Hvis et testsvar er større enn dette, blokkerer appen lagringen i stedet for å la trinnet mislykkes i en aktiv arbeidsflyt.

Gode praksiseksempler

  • Bruk tydelige navn på forespørslene, slik at de er enkle å finne i Shopify Flow.
  • Lagre API-tokens som hemmelige opplysninger i stedet for å skrive dem inn i overskrifter.
  • Sørg for at ressursene rettes mot de områdene som destinasjonen faktisk trenger.
  • Sjekk historikken etter hver endring for å bekrefte at forespørselen fortsatt gjennomføres.
  • Legg til et vilkår før forespørselen, slik at den ikke kjøres i tomgang.

Relatert