Jednoczesne wysyłanie wielu próśb

Za pomocą interfejsu Merchant API możesz używać żądań zbiorczych, aby wysyłać wiele żądań w jednym wywołaniu interfejsu API.

Żądanie zbiorcze to pojedyncze standardowe żądanie HTTP zawierające wiele wywołań interfejsu API korzystające z typu treści multipart/mixed. Każda część głównego żądania HTTP zawiera zagnieżdżone żądanie HTTP.

Możesz wysłać żądanie zbiorcze na adres batchPath dla interfejsu API. Wartość batchPath interfejsu Merchant API w wersji beta to batch/{sub-api}/v1beta . Informacje o batchPath innych interfejsów API znajdziesz w ich dokumentach opisujących.

Oto kilka przykładowych sytuacji, w których można grupować żądania:

  • Dopiero zaczynasz używać interfejsu API i masz dużo danych do przesłania.
  • Użytkownik wprowadził zmiany w danych, gdy aplikacja była offline, i aplikacja musi zsynchronizować dane lokalne z serwerem.

Jeśli masz pytania dotyczące grupowania HTTP lub chcesz poprosić o możliwość wysyłania żądań zbiorczych przy użyciu naszych bibliotek klienta, prześlij opinię.

Napisz żądanie zbiorcze

Oto przykładowe żądanie zbiorcze do interfejsu Merchant API. To żądanie łączy żądanie pobrania asortymentu regionalnego produktu i żądanie wstawiania w celu zaktualizowania lokalnego asortymentu tego samego produktu.

Zastosuj dokładnie taki format jak z przykładu:

  1. Użyj https://merchantapi.googleapis.com/batch/{sub-api}/v1beta jako podstawowego adresu URL.
  2. Określ granicę, aby oddzielić każde zagnieżdżone żądanie, na przykład:

    -H 'Content-Type: multipart/mixed,boundary=batch_inventory' \

  3. Rozdziel każde zagnieżdżone żądanie granicą, na przykład --batch_inventory.

  4. Umieść Content-Type: application/http na początku każdego zagnieżdżonego żądania.

  5. (Opcjonalnie) Użyj funkcji Content-ID, aby oznaczyć każde zagnieżdżone żądanie własnym identyfikatorem. Na przykład:

    Content-ID: <get:online:en:US:123456>.

  6. Umieść pusty wiersz między nagłówkiem, ścieżką i treścią każdego zagnieżdżonego żądania. Jeśli zagnieżdżone żądanie nie ma treści, przed następną granicą pozostaw pusty wiersz.

  7. Nie podawaj podstawowego adresu URL w każdym zagnieżdżonym żądaniu.

  8. Zakończ żądanie główne ostateczną granicą, np. --batch_inventory–.

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--
'

Jeśli musisz wykonać wywołania w określonej kolejności, wyślij je oddzielnie i zaczekaj na odpowiedź na pierwsze żądanie, zanim wyślesz kolejne.

Odczytywanie odpowiedzi zbiorczej

Oto przykład odpowiedzi zbiorczej HTTP. Kolejność odpowiedzi może nie być zgodna z kolejnością próśb. Użyj operatora Content-ID, aby zidentyfikować zagnieżdżone żądanie, do którego należy każda zagnieżdżona odpowiedź. Każdy element Content-ID w odpowiedziach jest poprzedzony znakiem response-.

--batch_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
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_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ
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_YCE-jYH0pmDrBIHeHhltcpXIMpk0VTzQ--
'