Effettate una richiesta HTTP all'indirizzo Shopify Flow

Perché utilizzare questa opzione per le richieste HTTP

Shopify Flow include un'azione integrata denominata "Invia richiesta HTTP", ma è disponibile solo su determinati piani di Shopify. Se il Suo negozio utilizza il piano Basic, può comunque richiamare API esterne utilizzando invece Workflow Transactional Email.

È sufficiente creare la richiesta una sola volta nell’app, quindi selezionarla all’interno del workflow utilizzando l’azione “Richiesta HTTP”. Mantenere la richiesta nell’app anziché nel workflow significa anche che le credenziali non vengono mai memorizzate nella configurazione di Shopify Flow e che si ottiene gratuitamente la registrazione completa delle richieste e delle risposte.

Cosa realizzerete

Un workflow che viene eseguito ogni 10 minuti, individua i prodotti che non sono ancora presenti in Airtable e li invia a tale piattaforma.

In questo caso si utilizzano:

  • Segreti per conservare il token Airtable e l’ID della base
  • Richieste HTTP per definire il modello di richiesta
  • L'azione "Richiesta HTTP" all'interno di Shopify Flow per eseguirla
  • Cronologia per verificare il risultato

Guida video

L'intera configurazione: la creazione delle chiavi segrete, la richiesta HTTP e il workflow. Il video è privo di audio.

Prima di iniziare

  • Workflow Transactional Email è installato.
  • Ha accesso a Shopify Flow.
  • Dispone di un ID di base Airtable e di una tabella pronta a ricevere i dati relativi ai prodotti.
  • Lei dispone di un token di accesso Airtable per con le autorizzazioni appropriate.

Fase 1: Salvare le credenziali come segreti

Anziché digitare le credenziali nella richiesta, le salvi una volta come “segreti” e le utilizzi come {{ secrets.yourKeyName }}. Sono crittografate quando non sono in uso, riutilizzabili in tutte le richieste e non vengono registrate nella cronologia.

Apra "Segreti" e faccia clic su "Crea segreto".

La pagina “Segreti” con il pulsante “Crea segreto”

Inserisca la chiave, il valore e una descrizione, quindi salvi.

Inserimento di una chiave segreta, di un valore e di una descrizione

In questo esempio vengono memorizzati due dati riservati: il token di accesso personale e l'ID della base Airtable.

Fase 2: Creare la richiesta

In questo esempio viene utilizzato l'endpoint "create-records" di Airtable, disponibile all'indirizzo .

Apra la sezione "Richieste HTTP" e faccia clic su "Crea richiesta".

La pagina “Richieste HTTP” con il pulsante “Crea richiesta”

Assegnategli un nome chiaro, ad esempio “Crea record di prodotto in Airtable”: sarà questo il nome che cercherete in seguito all’interno di Shopify Flow.

Impostare il metodo. Per la creazione di record in Airtable, il metodo da utilizzare è POST.

Inserisca l'endpoint nel campo URL. Il prefisso https:// è fisso, pertanto digiti il resto:

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

Questa immagine illustra come l'endpoint di Airtable sia associato alla Sua base; potrà quindi adattarlo alle Sue esigenze:

In che modo l’URL dell’endpoint di Airtable corrisponde alla base

Aggiunga le intestazioni richieste da Airtable:

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

Nel corpo della richiesta, utilizzi una variabile per i record in modo che Shopify Flow possa fornirli:

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

Airtable prevede che tale variabile assuma la forma di un array come questo:

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

Creeremo quell’array nel workflow nel passaggio successivo.

La richiesta completa si presenta come segue:

La richiesta HTTP completa ad Airtable

La pagina “Richieste HTTP” che elenca una richiesta salvata con il relativo metodo e URL
La sezione "Richieste HTTP" elenca tutte le richieste salvate; la funzione "Crea richiesta" ne avvia una nuova.
L'editor delle richieste HTTP con metodo, URL, intestazioni e corpo
La richiesta: metodo, URL, intestazioni e corpo, ciascuno dei quali può utilizzare variabili e valori riservati.

Salvi la richiesta. Ora è possibile selezionarla nell'azione "Richiesta HTTP" in Shopify Flow.

Fase 3: Creare il workflow

Apra Shopify Flow e crei un nuovo workflow.

Selezioni un trigger basato su una pianificazione. In questo esempio, l'esecuzione avviene ogni 10 minuti a scopo dimostrativo: scelga un intervallo adeguato per l'ambiente di produzione.

Un trigger pianificato in Shopify Flow

Recuperi i prodotti che non sono ancora presenti in Airtable. Ai prodotti già inviati viene assegnato il tag added-to-airtable nella fase finale; pertanto, questa query li esclude. Si veda la guida di Shopify relativa agli argomenti di query all’indirizzo.

Recupero dei prodotti privi di tag in Shopify Flow

Ora formatti i dati. Il corpo della richiesta richiede una variabile di tipo records, pertanto utilizzi l’azione “Esegui codice” di Shopify Flow per organizzare i prodotti recuperati in tale array.

Aggiunta dell’azione “Esegui codice”

Si configuri la fase come segue:

Configurazione del passaggio "Esegui codice"

La domanda:

query {
  getProductData {
    id
    handle
    title
  }
}

Il codice:

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

Lo schema di output:

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

Potete visualizzare l'anteprima del risultato sulla destra:

Anteprima dell'output del codice "Run"

Aggiunga l'azione "Richiesta HTTP" fornita da questa app.

Aggiunta dell'azione "Richiesta HTTP"

Quando richiesto, selezioni la richiesta che ha salvato - Crea record di prodotto Airtable - quindi salvi e torni al workflow.

Selezione della richiesta HTTP salvata

Nel campo "Variabili" dell'azione, inserisca i record che ha appena formattato:

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

Trasmissione dei record formattati all' della richiesta

Infine, si esegua un ciclo sui prodotti recuperati e li si contrassegni added-to-airtable, in modo che la prossima esecuzione non li rilevi nuovamente.

Etichettatura dei prodotti dopo l’invio

Salvi e attivi il workflow.

Fase 4: Verificare che abbia funzionato

Nella sezione “Cronologia” è possibile verificare se la richiesta è andata a buon fine e quali dati Airtable ha restituito.

L'elenco della cronologia che mostra la richiesta

Apra la voce per esaminare i dati della richiesta, i dati della risposta e i tempi.

La pagina dei dettagli della richiesta

Dalla pagina di modifica della richiesta, il pulsante “Cronologia della richiesta” consente di accedere direttamente alla cronologia filtrata in base a quella specifica richiesta.

A chi l’app non vi consentirà di telefonare

Le richieste configurate dal commerciante vengono sottoposte a un controllo di sicurezza. Le richieste rivolte a indirizzi di rete interni o privati vengono rifiutate, inclusi localhost, gli endpoint dei metadati cloud e qualsiasi indirizzo che risolva in un intervallo privato, anche tramite reindirizzamento. Se viene visualizzato un errore che menziona SSRF blocked, la destinazione è presente in tale elenco. Le richieste possono inoltre seguire al massimo 5 reindirizzamenti e la risposta è limitata a 10 MB.

Shopify Flow limita di per sé la dimensione della risposta di un’azione a 50 KB. Se la risposta di un test supera tale limite, l’applicazione blocca il salvataggio anziché consentire che la fase fallisca all’interno di un workflow attivo.

Migliori pratiche

  • Utilizzi nomi chiari per le richieste, in modo che siano facili da individuare in Shopify Flow.
  • Si raccomanda di memorizzare i token API come segreti, anziché inserirli direttamente nelle intestazioni.
  • Concentri il corpo sulle aree di cui la destinazione ha effettivamente bisogno.
  • Dopo ogni modifica, controlli la cronologia per verificare che la richiesta vada ancora a buon fine.
  • Aggiunga una condizione prima della richiesta, in modo che questa non venga eseguita durante i cicli vuoti.

Correlati