Tek bir API çağrısında birden fazla HTTP isteği göndermek için Merchant API ile toplu istekleri kullanabilirsiniz.
Toplu işlemi istemci kitaplıklarıyla yapmayı tercih ediyorsanız Eşzamanlı istekler için kodu yeniden düzenleme başlıklı makaleyi inceleyin.
Toplu istek, multipart/mixed içerik türünü kullanarak birden fazla API çağrısı içeren tek bir standart HTTP isteğidir. Ana HTTP isteğindeki her parça, iç içe yerleştirilmiş bir HTTP isteği içerir.
Toplu isteği, API için belirtilen batchPath adresine gönderebilirsiniz.
batchPath için Merchant API batch/{sub-api}/v1. Diğer API'lerin batchPath değerini keşif belgelerinde bulabilirsiniz.
İsteklerinizi toplu olarak göndermeniz için geçerli nedenlere örnek olarak şunlar verilebilir:
- API'yi kullanmaya yeni başladınız ve yüklemeniz gereken çok fazla veri var.
- Uygulamanız çevrimdışıyken bir kullanıcı verilerde değişiklik yaptı ve uygulamanızın yerel verileri sunucuyla senkronize etmesi gerekiyor.
Birden fazla isteği paralel olarak göndermek, en yavaş alt isteği beklemenizi önler. Bu da sunucu yanıt sürelerini iyileştirir ve gecikmeyi azaltır.
Toplu istek yazma
Aşağıda örnek bir Merchant API toplu isteği verilmiştir. Bu istek, bir ürünün bölgesel envanterini almak için bir get isteğini ve aynı ürünün bölgesel envanterini güncellemek için bir insert isteğini birleştirir. Örnekteki biçimi tam olarak uygulamanız gerekir:
- Ana URL olarak
https://merchantapi.googleapis.com/batch/{sub-api}/v1adresini kullanın. - İç içe yerleştirilmiş her isteği ayırmak için bir sınır belirtin. Örneğin:
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \ - İç içe yerleştirilmiş her isteği sınırla ayırın, örneğin
--batch_inventory. - Her iç içe yerleştirilmiş isteğin başına
Content-Type: application/httpekleyin. - Her iç içe yerleştirilmiş isteği kendi kimliğinizle etiketlemek için
Content-IDkullanın. Örneğin:Content-ID: <get~en~US~123456>. - Her iç içe yerleştirilmiş isteğin üstbilgisi, yolu ve gövdesi arasına boş bir satır ekleyin. İç içe yerleştirilmiş isteğin gövdesi yoksa sonraki sınırdan önce boş bir satır bırakın.
- İç içe yerleştirilmiş her bir isteğe ana URL'yi eklemeyin.
- Ana isteği son bir sınırla bitirin (ör.
--batch_inventory–).
curl https://merchantapi.googleapis.com/batch/inventories/v1 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
--data '
--batch_inventory
Content-Type: application/http
Content-ID: <get~en~US~123456>
GET /inventories/v1/accounts/123/products/en~US~123456/regionalInventories
--batch_inventory
Content-Type: application/http
Content-ID: <post~en~US~123456>
POST /inventories/v1/accounts/123/products/en~US~123456/regionalInventories:insert
{
"region": "123456",
"price": {
"amountMicros": "100000000",
"currencyCode": "USD"
}
}
--batch_inventory--'
Siparişle ilgili notlar
- İstekler, belirttiğiniz sırayla yürütülmeyebilir.
- İstekleri tek tek tanımlamak için
Content-IDkullanın. - Çağrılarınızı belirli bir sırayla yürütmeniz gerekiyorsa bunları ayrı ayrı gönderin ve bir sonraki isteği göndermeden önce ilk isteğin yanıtını bekleyin.
Toplu yanıt okuma
Aşağıda bir HTTP toplu yanıtı örneği verilmiştir. Yanıtların sırası, isteklerin sırasıyla eşleşmeyebilir. Her bir iç içe yerleştirilmiş yanıtın ait olduğu iç içe yerleştirilmiş isteği tanımlamak için Content-ID kullanın. API, yanıtlarda her Content-ID için bir response- ön eki ekler.
--batch_inventory
Content-Type: application/http
Content-ID: <response-get~en~US~123456>
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{}
--batch_inventory
Content-Type: application/http
Content-ID: <response-post~en~US~123456>
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Vary: Origin
Vary: X-Origin
Vary: Referer
{
"name": "accounts/123/products/en~US~123456/regionalInventories/123456",
"region": "123456",
"price": {
"amountMicros": "100000000",
"currencyCode": "USD"
}
}
--batch_inventory--
Sınırlar
Toplu istekler için aşağıdaki sınırlar geçerlidir:
- Toplu istek başına 2.000 iç içe yerleştirilmiş istek.
Toplu istek bu sınırlardan herhangi birini aşarsa API, 400 Bad Request hatası döndürür ve isteğin tamamını reddeder.