একটি API কলের মাধ্যমে একাধিক HTTP অনুরোধ পাঠাতে, আপনি Merchant API-এর সাথে ব্যাচ অনুরোধ ব্যবহার করতে পারবেন।
আপনি যদি ক্লায়েন্ট লাইব্রেরির সাথে ব্যাচিং করতে চান, তাহলে একসাথে করা অনুরোধের জন্য কোড রিফ্যাক্টর করুন দেখুন।
ব্যাচ অনুরোধ হল একটি স্ট্যান্ডার্ড HTTP অনুরোধ যাতে একাধিক
API কল থাকে এবং multipart/mixed content-type ব্যবহার করা হয়। মূল HTTP
অনুরোধের মধ্যে, প্রতিটি অংশে নেস্ট করা HTTP অনুরোধ থাকে।
আপনি API-এর জন্য নির্দিষ্ট batchPath-এ ব্যাচ অনুরোধ পাঠাতে পারেন।
batchPath-এর জন্য Merchant API হল batch/{sub-api}/v1। আপনি অন্যান্য API-এর batchPath তাদের ডিসকভারি
ডকুমেন্টে খুঁজে পাবেন।
আপনার অনুরোধ ব্যাচ করার কারণের উদাহরণগুলির মধ্যে এগুলি অন্তর্ভুক্ত:
- আপনি সবেমাত্র API ব্যবহার করা শুরু করেছেন এবং আপলোড করার জন্য প্রচুর ডেটা আছে।
- আপনার অ্যাপ্লিকেশন অফলাইন থাকাকালীন কোনও ব্যবহারকারী ডেটাতে পরিবর্তন করেছেন এবং আপনার অ্যাপ্লিকেশনকে সার্ভারের সাথে লোকাল ডেটা সিঙ্ক্রোনাইজ করতে হবে।
সমান্তরালভাবে একাধিক অনুরোধ পাঠালে, সবচেয়ে ধীর গতির সাব-রিকোয়েস্টের জন্য অপেক্ষা করতে হয় না, এর ফলে সার্ভারের উত্তর দেওয়ার সময় উন্নত হয় এবং লেটেন্সি কমে যায়।
ব্যাচ অনুরোধ লেখা
এখানে Merchant API ব্যাচ অনুরোধের একটি নমুনা দেওয়া হল। এই অনুরোধে কোনও প্রোডাক্টের আঞ্চলিক ইনভেনটরি পাওয়ার জন্য একটি get অনুরোধ এবং একই প্রোডাক্টের আঞ্চলিক ইনভেনটরি আপডেট করার জন্য একটি insert অনুরোধ একসাথে করা হয়েছে। আপনাকে ঠিক উদাহরণে দেখানো ফর্ম্যাট অনুসরণ করতে হবে:
- বেস 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 {ACCESS_TOKEN}' \
-H 'Content-Type: multipart/mixed,boundary=batch_inventory' \
--data '
--batch_inventory
Content-Type: application/http
Content-ID: <get~en~US~123456>
GET /inventories/v1/accounts/123/products/en~US~123456/regionalInventories
--batch_inventory
Content-Type: application/http
Content-ID: <post~en~US~123456>
POST /inventories/v1/accounts/123/products/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~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--
সীমা
ব্যাচ অনুরোধের ক্ষেত্রে নিম্নলিখিত সীমা প্রযোজ্য:
- ব্যাচ অনুরোধ পিছু ২,০০০ নেস্টেড অনুরোধ।
কোনও ব্যাচ অনুরোধ এই সীমার কোনও একটি অতিক্রম করলে, API একটি
400 Bad Request সমস্যা কোড রিটার্ন করে এবং সম্পূর্ণ অনুরোধটি বাতিল করে দেয়।