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