판매자 API와 함께 일괄 요청을 사용하여 단일 API 호출에서 여러 HTTP 요청을 보낼 수 있습니다.
클라이언트 라이브러리를 사용하여 일괄 처리를 수행하려면 동시 요청을 위한 코드 리팩터링을 참고하세요.
일괄 요청은 여러 API 호출이 포함된 단일 표준 HTTP 요청이며, multipart/mixed
콘텐츠 유형을 사용합니다. 기본 HTTP 요청 내의 각 부분에 중첩된 HTTP 요청이 포함됩니다.
API의 지정된 batchPath
에 일괄 요청을 보낼 수 있습니다. Merchant API의 batchPath
는 batch/{sub-api}/v1
입니다. 다른 API의 batchPath
는 검색 문서에서 확인할 수 있습니다. 요청을 일괄 처리해야 하는 이유의 예는 다음과 같습니다.
- API를 이제 막 사용하기 시작했고 업로드할 데이터가 많습니다.
- 애플리케이션이 오프라인인 상태에서 사용자가 데이터를 변경했기 때문에 애플리케이션에서 로컬 데이터와 서버를 동기화해야 합니다.
여러 요청을 동시에 보내면 가장 느린 하위 요청을 기다리지 않아도 되므로 서버 응답 시간이 개선되고 지연 시간이 줄어듭니다.
일괄 요청 작성
다음은 샘플 Merchant API 일괄 요청입니다. 이 요청은 제품의 지역 인벤토리를 가져오는 get 요청과 동일한 제품의 지역 인벤토리를 업데이트하는 insert 요청을 결합합니다. 예시의 형식을 정확하게 따라야 합니다.
https://merchantapi.googleapis.com/batch/{sub-api}/v1
을 기본 URL로 사용합니다.- 중첩된 각 요청을 구분하는 경계를 지정합니다(예:
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
). - 중첩된 각 요청을 경계(예:
--batch_inventory
)로 구분합니다. - 중첩된 각 요청의 시작 부분에
Content-Type: application/http
를 포함합니다. Content-ID
를 사용하여 각 중첩 요청에 자체 ID를 라벨로 지정합니다. 예를 들면Content-ID: <get:online:en:US:123456>
입니다.- 각 중첩 요청의 헤더, 경로, 본문 사이에 빈 줄을 포함합니다. 중첩된 요청에 본문이 없는 경우 다음 경계 앞에 빈 줄을 남겨 둡니다.
- 각 개별 중첩 요청에 기본 URL을 포함하지 마세요.
--batch_inventory–
과 같은 최종 경계로 기본 요청을 종료합니다.
curl https://merchantapi.googleapis.com/batch/inventories/v1 \
-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/v1/accounts/123/products/online:en:US:123456/regionalInventories
--batch_inventory
Content-Type: application/http
Content-ID: <post:online:en:US:123456>
POST /inventories/v1/accounts/123/products/online:en:US:123456/regionalInventories:insert
{
"region: "123456",
"price": {
"amountMicros": "100000000",
"currencyCode": "USD"
}
}
--batch_inventory--
'
주문 관련 참고사항
- 요청이 지정한 순서로 실행되지 않을 수 있습니다.
Content-ID
를 사용하여 개별 요청을 식별합니다.- 지정된 순서로 호출을 실행해야 하는 경우 호출을 별도로 보내고 첫 번째 요청의 응답을 기다린 후 다음 요청을 보내세요.
일괄 응답 읽기
다음은 HTTP 일괄 응답의 예입니다. 대답의 순서는 요청의 순서와 일치하지 않을 수 있습니다. Content-ID
를 사용하여 각 중첩된 응답이 속한 중첩된 요청을 식별합니다. 대답에서 API는 각 Content-ID
에 response-
접두사를 추가합니다.
--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--
'