আপনি একটি একক API কলে একাধিক HTTP অনুরোধ পাঠাতে Merchant API-এর সাথে ব্যাচ অনুরোধ ব্যবহার করতে পারেন।
আপনি যদি ক্লায়েন্ট লাইব্রেরি দিয়ে ব্যাচিং করতে চান, তাহলে সমবর্তী অনুরোধের জন্য রিফ্যাক্টর কোড দেখুন।
একটি ব্যাচ রিকোয়েস্ট হল একটি একক স্ট্যান্ডার্ড HTTP রিকোয়েস্ট যাতে একাধিক API কল থাকে, multipart/mixed কন্টেন্ট টাইপ ব্যবহার করে। প্রধান HTTP রিকোয়েস্টের মধ্যে, প্রতিটি অংশে একটি নেস্টেড HTTP রিকোয়েস্ট থাকে।
আপনি API-এর জন্য নির্দিষ্ট batchPath এ ব্যাচ অনুরোধ পাঠাতে পারেন। Merchant API-এর জন্য batchPath হল batch/{sub-api}/v1 । আপনি অন্যান্য API-এর জন্য batchPath তাদের আবিষ্কারের নথিতে খুঁজে পেতে পারেন।
আপনার অনুরোধগুলিকে ব্যাচ করার কারণগুলির উদাহরণগুলির মধ্যে রয়েছে:
- তুমি সবেমাত্র API ব্যবহার শুরু করেছো এবং তোমার কাছে অনেক ডেটা আপলোড করার আছে।
- আপনার অ্যাপ্লিকেশন অফলাইন থাকাকালীন একজন ব্যবহারকারী ডেটাতে পরিবর্তন করেছেন এবং আপনার অ্যাপ্লিকেশনটিকে সার্ভারের সাথে স্থানীয় ডেটা সিঙ্ক্রোনাইজ করতে হবে।
সমান্তরালভাবে একাধিক অনুরোধ পাঠানো আপনাকে সবচেয়ে ধীর সাব-রিকোয়েস্টের জন্য অপেক্ষা করতে বাধা দেয়, যা সার্ভারের প্রতিক্রিয়ার সময় উন্নত করে এবং লেটেন্সি হ্রাস করে।
একটি ব্যাচ অনুরোধ লিখুন
এখানে একটি নমুনা Merchant API ব্যাচ অনুরোধ দেওয়া হল। এই অনুরোধে একটি পণ্যের আঞ্চলিক ইনভেন্টরি পুনরুদ্ধারের জন্য একটি get অনুরোধ এবং একই পণ্যের আঞ্চলিক ইনভেন্টরি আপডেট করার জন্য একটি সন্নিবেশ অনুরোধ একত্রিত করা হয়েছে। আপনার উদাহরণের ফর্ম্যাটটি হুবহু অনুসরণ করা উচিত:
- বেস URL হিসেবে
https://merchantapi.googleapis.com/batch/{sub-api}/v1ব্যবহার করুন। - প্রতিটি নেস্টেড রিকোয়েস্টকে আলাদা করার জন্য একটি সীমানা নির্দিষ্ট করুন, উদাহরণস্বরূপ:
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \ - প্রতিটি নেস্টেড রিকোয়েস্টকে সীমানা দিয়ে আলাদা করুন, উদাহরণস্বরূপ
--batch_inventory। - প্রতিটি নেস্টেড অনুরোধের শুরুতে
Content-Type: application/httpঅন্তর্ভুক্ত করুন। - প্রতিটি নেস্টেড অনুরোধকে আপনার নিজস্ব আইডি দিয়ে লেবেল করতে
Content-IDব্যবহার করুন। উদাহরণস্বরূপ:Content-ID: <get~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- prefix যোগ করে।
--batch_inventory
Content-Type: application/http
Content-ID: <response-get~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~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/en~US~123456/regionalInventories/123456",
"region": "123456",
"price": {
"amountMicros": "100000000",
"currencyCode": "USD"
}
}
--batch_inventory--
'