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:
- Użyj
https://merchantapi.googleapis.com/batch/{sub-api}/v1beta
jako podstawowego adresu URL. Określ granicę, aby oddzielić każde zagnieżdżone żądanie, na przykład:
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
Rozdziel każde zagnieżdżone żądanie granicą, na przykład
--batch_inventory
.Umieść
Content-Type: application/http
na początku każdego zagnieżdżonego żądania.(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>
.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.
Nie podawaj podstawowego adresu URL w każdym zagnieżdżonym żądaniu.
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--
'