Send en HTTP-forespørsel fra Shopify Flow
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.

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

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.

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:

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:



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.

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.

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.

Konfigurer trinnet slik:

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:

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

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.

I feltet «Variabler» i handlingen skal du overføre postene du nettopp har formatert:
{
"records": "{{runCode.records}}"
}

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.

Lagre og aktiver arbeidsflyten.
Trinn 4: Kontroller at det fungerte
I Historikk kan du se om forespørselen lyktes og hva Airtable sendte tilbake.

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

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
- Hemmeligheter - lagring av påloggingsopplysninger.
- Variabler og væske - variabelreferansen, inkludert overstyring av hoveddelen.
- Historikk og feilsøking - å lese en mislykket forespørsel.
