Tek seferde birden fazla istek gönderme

Tek bir API çağrısında birden fazla HTTP isteği göndermek için Merchant API ile toplu istekleri kullanabilirsiniz.

İstemci kitaplıklarını kullanarak toplu hale getirme işlemini gerçekleştirmeyi tercih ediyorsanız Eşzamanlı istekler için kodu yeniden yapılandırın başlıklı makaleyi inceleyin.

Toplu istek, multipart/mixed içerik türünü kullanan birden fazla API çağrısı içeren tek bir standart HTTP isteğidir. Ana HTTP isteğinde 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. Merchant API beta sürümü için batchPath değeri batch/{sub-api}/v1beta'dır. Diğer API'lerin batchPath değerini, ilgili API'lerin keşif belgelerinde bulabilirsiniz. İsteklerinizin bir arada gönderilmesinin nedenlerine örnek olarak aşağıdakiler verilebilir:

  • API'yi kullanmaya yeni başladıysanız ve yüklemeniz gereken çok sayıda veri varsa
  • Uygulamanız çevrimdışıyken bir kullanıcı verilerde değişiklik yaptı ve uygulamanızın yerel verileri sunucuda senkronize etmesi gerekiyor.

Toplu istek yazma

Aşağıda Merchant API toplu isteği örneği verilmiştir. Bu istek, bir ürünün bölgesel envanterini almak için bir get isteği ve aynı ürünün bölgesel envanterini güncellemek için bir insert isteği içerir. Örnekteki biçimi aynen uygulamanız gerekir:

  1. Temel URL olarak https://merchantapi.googleapis.com/batch/{sub-api}/v1beta kullanın.
  2. Her iç içe yerleştirilmiş isteği ayırmak için bir sınır belirtin. Örneğin: -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
  3. Her iç içe yerleştirilmiş isteği sınırla ayırın (ör. --batch_inventory).
  4. Her iç içe yerleştirilmiş isteğin başına Content-Type: application/http ekleyin.
  5. Her iç içe yerleştirilmiş isteği kendi kimliğinizle etiketlemek için Content-ID öğesini kullanın. Örneğin: Content-ID: <get:online:en:US:123456>.
  6. Her iç içe yerleştirilmiş isteğin başlığı, yolu ve gövdesi arasına boş bir satır ekleyin. İç içe yerleştirilmiş istekte bir gövde yoksa bir sonraki sınırdan önce boş bir satır bırakın.
  7. Temel URL'yi her iç içe yerleştirilmiş isteğe dahil etmeyin.
  8. Ana isteği son bir sınırla (ör. --batch_inventory–) bitirin.
curl https://merchantapi.googleapis.com/batch/inventories/v1beta \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
--data '
--batch_inventory
Content-Type: application/http
Content-ID: <get:online:en:US:123456>
GET /inventories/v1beta/accounts/123/products/online:en:US:123456/regionalInventories
--batch_inventory
Content-Type: application/http
Content-ID: <post:online:en:US:123456>
POST /inventories/v1beta/accounts/123/products/online:en:US:123456/regionalInventories:insert
{
   "region: "123456",
    "price": {
        "amountMicros": "100000000",
        "currencyCode": "USD"
    }
}
--batch_inventory--
'

Sipariş vermeyle ilgili notlar

  • İstekler, belirttiğiniz sırayla yürütülmeyebilir.
  • Tek tek istekleri tanımlamak için Content-ID kullanın.
  • Çağrıları belirli bir sırada yürütmeniz gerekiyorsa bunları ayrı olarak gönderin ve bir sonrakini göndermeden önce ilk isteğe verilen yanıtı bekleyin.

Toplu yanıtı okuma

HTTP toplu yanıtı örneğini aşağıda bulabilirsiniz. Yanıtların sırası, isteklerin sırasıyla eşleşmeyebilir. Her iç içe yerleştirilmiş yanıtın ait olduğu iç içe yerleştirilmiş isteği tanımlamak için Content-ID öğesini kullanın. API, yanıtlara her Content-ID için bir response- ön ek ekler.

--batch_inventory
Content-Type: application/http
Content-ID: <response-get:online: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:online: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/online:en:US:123456/regionalInventories/123456",
  "region": "123456",
  "price": {
    "amountMicros": "100000000",
    "currencyCode": "USD"
  }
}
--batch_inventory--
'