Merchant API와 함께 일괄 요청을 사용하여 단일 API 호출로 여러 HTTP 요청을 전송할 수 있습니다.
클라이언트 라이브러리로 일괄 처리를 실행하려면 동시 요청을 위한 코드 리팩터링을 참고하세요.
일괄 요청은 여러 개의 API 호출이 포함된 단일 표준 HTTP 요청이며, multipart/mixed
콘텐츠 유형을 사용합니다. 기본 HTTP 요청 내의 각 부분에 중첩된 HTTP 요청이 포함됩니다.
API의 지정된 batchPath
에 일괄 요청을 보낼 수 있습니다. Merchant API 베타의 batchPath
는 batch/{sub-api}/v1beta
입니다. 다른 API의 batchPath
는 탐색 문서에서 확인할 수 있습니다. 요청을 일괄 처리하는 이유의 예는 다음과 같습니다.
- API를 이제 막 사용하기 시작했고 업로드할 데이터가 많습니다.
- 애플리케이션이 오프라인 상태에서 사용자가 데이터를 변경했으며 애플리케이션에서 로컬 데이터를 서버와 동기화해야 합니다.
일괄 요청 작성
다음은 Merchant API 일괄 요청의 샘플입니다. 이 요청은 제품의 지역 인벤토리를 검색하는 get 요청과 동일한 제품의 지역 인벤토리를 업데이트하는 insert 요청을 결합합니다. 예시의 형식을 정확하게 따라야 합니다.
https://merchantapi.googleapis.com/batch/{sub-api}/v1beta
을 기본 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/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--
'
주문 관련 참고사항
- 요청이 지정한 순서대로 실행되지 않을 수 있습니다.
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--
'