Shopify Flow'dan bir HTTP isteği gönderin
Shopify Flow'dan harici API'lere HTTP isteği gönderin, Shopify Basic planında bile. Videolu adım adım kılavuz ve çalışan bir Airtable örneği.
HTTP istekleri için bunu neden kullanmalı?
Shopify Flow, yerleşik bir “HTTP isteği gönder” eylemi içerir; ancak bu eylem yalnızca belirli Shopify planlarında kullanılabilir. Mağazanız Basic planındaysa, bunun yerine Workflow Transactional Email’i kullanarak yine de harici API’leri çağırabilirsiniz.
İsteği uygulamada bir kez oluşturursunuz, ardından iş akışınızın içinde HTTP Request eylemini kullanarak bu isteği seçersiniz. İsteği iş akışında değil uygulamada tutmak, kimlik bilgilerinin hiçbir zaman Shopify Flow yapılandırmanızda kalmayacağı anlamına gelir ve ayrıca isteğe ve yanıtlara ilişkin tam günlük kaydı özelliğinden ücretsiz olarak yararlanabilirsiniz.
Ne geliştireceksiniz?
Her 10 dakikada bir çalışan, henüz Airtable'da bulunmayan ürünleri bulan ve bunları Airtable'a gönderen bir iş akışı.
Bu, şunları kullanır:
- Airtable jetonunu ve temel kimliğini saklamanın püf noktaları
- HTTP Request'ler: istek şablonunu tanımlamak için
- Shopify Flow içindeki HTTP Request eylemini çalıştırmak için
- Sonucu kontrol etmek için geçmiş
Video kılavuzu
Tüm süreç: gizli anahtarların oluşturulması, HTTP isteği ve iş akışı. Videoda ses yok.
Başlamadan önce
- Workflow Transactional Email kuruldu.
- Shopify Flow'a erişiminiz var.
- Bir Airtable tabanı kimliğiniz ve ürün verilerini almaya hazır bir tablonuz var.
- Doğru izinlere sahip bir Airtable erişim jetonunuz var.
1. Adım: Kimlik bilgilerini gizli veriler olarak saklayın
Kimlik bilgilerini isteğe doğrudan yazmak yerine, bunları bir kez gizli veriler olarak kaydedin ve {{ secrets.yourKeyName }} biçiminde kullanın. Bu veriler depolandıkları sırada şifrelenir, farklı isteklerde tekrar kullanılabilir ve geçmişinizden gizlenir.
"Açık Gizli Bilgiler"i seçin ve Gizli bilgi oluştur seçeneğine tıklayın.

Anahtarı, değeri ve açıklamayı girin, ardından kaydedin.

Bu örnekte iki gizli bilgi saklanmaktadır: kişisel erişim jetonu ve Airtable tabanı kimliği.
2. Adım: İsteği oluşturun
Bu örnekte Airtable'ın create-records uç noktası kullanılmaktadır.
HTTP Requestleri"ni açın ve İstek oluştur seçeneğine tıklayın.

Airtable ürün kaydı oluştur gibi net bir ad verin; daha sonra Shopify Flow'da bu adı arayacaksınız.
Yöntemi ayarlayın. Airtable kayıtları oluşturmak için bu yöntem POST’tur.
URL alanına uç noktayı girin. https:// öneki sabittir, bu nedenle geri kalan kısmı yazın:
api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products
Bu görsel, Airtable uç noktasının tabanınıza nasıl eşleştiğini göstermektedir; böylece bunu kendi tabanınıza göre ayarlayabilirsiniz:

Airtable’ın gerektirdiği başlıkları ekleyin:
Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json
İstek gövdesinde, kayıtlar için bir değişken kullanın; böylece Shopify Flow bunları sağlayabilir:
{
"records": {{ variables.records }}
}
Airtable, bu değişkenin aşağıdaki gibi bir diziye dönüşmesini bekler:
"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
}
}
]
Bir sonraki adımda bu diziyi iş akışında oluşturacağız.
Tamamlanmış istek şu şekilde görünür:



İsteği kaydedin. Artık Shopify Flow’daki HTTP Request eyleminde bu istek seçilebilir.
3. Adım: İş akışını oluşturun
Shopify Flow'u açın ve yeni bir iş akışı oluşturun.
Zamanlamaya dayalı bir tetikleyici seçin. Bu örnek, tanıtım amacıyla her 10 dakikada bir çalıştırılır; üretim ortamında kullanmak üzere makul bir aralık seçin.

Henüz Airtable'da bulunmayan ürünleri getir. Daha önce gönderilmiş ürünler son adımda added-to-airtable etiketini aldığından, bu sorgu onları hariç tutar. Shopify'ın sorgu argümanı referansı'na bakın.

Şimdi verileri biçimlendirin. İstek gövdesi bir records değişkeni beklemektedir; bu nedenle, alınan ürünleri bu diziye dönüştürmek için Shopify Flow’un “Kod çalıştır” eylemini kullanın.

Adımı şu şekilde yapılandırın:

Sorgu:
query {
getProductData {
id
handle
title
}
}
Kod:
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)
};
}
Çıktı şeması:
"The output of Run Code"
type Output {
"The message returned by the script"
records: String
}
Sonucu sağ tarafta önizleyebilirsiniz:

Bu uygulama tarafından sunulan HTTP Request eylemini ekleyin.

İstenildiğinde, kaydettiğiniz isteği seçin - Airtable ürün kaydı oluştur - ardından kaydedin ve iş akışına geri dönün.

İşlemin “değişkenler” alanında, az önce biçimlendirdiğiniz kayıtları aktarın:
{
"records": "{{runCode.records}}"
}

Son olarak, alınan ürünleri tek tek inceleyin ve bunlara added-to-airtable etiketini ekleyin; böylece bir sonraki çalıştırmada bunlar tekrar alınmaz.

İş akışını kaydedin ve etkinleştirin.
4. Adım: Çalıştığını doğrulayın
Geçmiş bölümünde, isteğin başarılı olup olmadığını ve Airtable’ın ne yanıt verdiğini görebilirsiniz.

Girişi açarak istek verilerini, yanıt verilerini ve zamanlamayı inceleyin.

İsteğin düzenleme sayfasından, İstek geçmişi düğmesi, doğrudan o isteğe göre filtrelenmiş geçmişe yönlendirir.
Uygulama hangi numaraları aramanıza izin vermez?
Satıcı tarafından yapılandırılan istekler bir güvenlik kontrolünden geçer. localhost dahil olmak üzere, iç veya özel ağ adreslerine yönelik istekler, bulut meta veri uç noktaları ve özel bir aralığa çözümlenen her türlü adres (yönlendirme yoluyla olsa bile) reddedilir. SSRF blocked (SSRF engellendi) ifadesini içeren bir hata görürseniz, hedef adres bu listede yer almaktadır. İstekler ayrıca en fazla 5 yönlendirmeye izin verir ve yanıt boyutu 10 MB ile sınırlandırılır.
Shopify Flow, bir eylem yanıtının boyutunu 50 KB ile sınırlamaktadır. Test yanıtı bu sınırı aşarsa, uygulama, adımın canlı bir iş akışında başarısız olmasına izin vermek yerine kaydetme işlemini engeller.
En iyi uygulamalar
- Shopify Flow'da kolayca bulunabilmeleri için istek adlarını net bir şekilde belirleyin.
- API jetonlarını başlıklara yazmak yerine gizli bilgiler olarak saklayın.
- Vücudu, hedefin gerçekten ihtiyaç duyduğu alanlara odaklanmış halde tutun.
- Herhangi bir değişiklik yaptıktan sonra Geçmiş’i kontrol edin ve isteğin hâlâ başarılı olup olmadığını doğrulayın.
- Boş döngülerde çalışmaması için isteğin önüne bir koşul ekleyin.
İlgili
- Sırlar - kimlik bilgilerinin saklanması.
- Değişkenler ve Sıvı - değişken kılavuzu; gövde geçersiz kılma da dahil.
- Geçmiş ve sorun giderme - Hatalı bir isteğin okunması.
