প্লে গেম সার্ভিসেস পাবলিশিং এপিআই আপনাকে একটি গেম রিসোর্সের জন্য একটি ছবি আপলোড করতে দেয়।
আপলোড অপশন
প্লে গেম সার্ভিসেস পাবলিশিং API আপনাকে নির্দিষ্ট ধরণের বাইনারি ডেটা বা মিডিয়া আপলোড করতে দেয়। আপনি যে ডেটা আপলোড করতে পারেন তার নির্দিষ্ট বৈশিষ্ট্যগুলি মিডিয়া আপলোডগুলিকে সমর্থন করে এমন কোনও পদ্ধতির জন্য রেফারেন্স পৃষ্ঠায় উল্লেখ করা হয়েছে:
সর্বোচ্চ আপলোড ফাইলের আকার : আপনি এই পদ্ধতিতে সর্বাধিক পরিমাণ ডেটা সংরক্ষণ করতে পারেন।
গৃহীত মিডিয়া MIME প্রকার : আপনি এই পদ্ধতি ব্যবহার করে বাইনারি ডেটা সংরক্ষণ করতে পারেন।
আপনি নিম্নলিখিত উপায়ে আপলোড অনুরোধ করতে পারেন. আপলোড টাইপ অনুরোধ প্যারামিটারের সাথে আপনি যে পদ্ধতিটি ব্যবহার করছেন তা নির্দিষ্ট করুন।
সহজ আপলোড :
uploadType=media
। ছোট ফাইল দ্রুত স্থানান্তরের জন্য, উদাহরণস্বরূপ, 5 MB বা তার কম।মাল্টিপার্ট আপলোড :
uploadType=multipart
। ছোট ফাইল এবং মেটাডেটা দ্রুত স্থানান্তরের জন্য; ফাইলটিকে মেটাডেটা সহ স্থানান্তর করে যা এটি বর্ণনা করে, সমস্ত একটি একক অনুরোধে।পুনঃসূচনাযোগ্য আপলোড :
uploadType=resumable
। নির্ভরযোগ্য স্থানান্তরের জন্য, বিশেষ করে বড় ফাইলগুলির সাথে গুরুত্বপূর্ণ। এই পদ্ধতির সাহায্যে, আপনি একটি সেশন শুরু করার অনুরোধ ব্যবহার করেন, যা ঐচ্ছিকভাবে মেটাডেটা অন্তর্ভুক্ত করতে পারে। এটি বেশিরভাগ অ্যাপ্লিকেশনের জন্য ব্যবহার করার জন্য একটি ভাল কৌশল, যেহেতু এটি আপলোড প্রতি একটি অতিরিক্ত HTTP অনুরোধের খরচে ছোট ফাইলগুলির জন্যও কাজ করে।
আপনি যখন মিডিয়া আপলোড করেন, আপনি একটি বিশেষ URI ব্যবহার করেন। আসলে, মিডিয়া আপলোডগুলিকে সমর্থন করে এমন পদ্ধতিগুলির দুটি URI শেষ পয়েন্ট রয়েছে:
মিডিয়ার জন্য /আপলোড ইউআরআই । আপলোড এন্ডপয়েন্টের ফর্ম্যাট হল "/আপলোড" উপসর্গ সহ স্ট্যান্ডার্ড রিসোর্স URI। মিডিয়া ডেটা স্থানান্তর করার সময় এই URI ব্যবহার করুন।
উদাহরণ:
POST /upload/games/v1configuration/images/resourceId/imageType/imageType
মেটাডেটার জন্য স্ট্যান্ডার্ড রিসোর্স URI। যদি সম্পদে কোনো ডেটা ক্ষেত্র থাকে, সেই ক্ষেত্রগুলি আপলোড করা ফাইলের বর্ণনা মেটাডেটা সংরক্ষণ করতে ব্যবহৃত হয়। মেটাডেটা মান তৈরি বা আপডেট করার সময় আপনি এই URI ব্যবহার করতে পারেন।
উদাহরণ:
POST /games/v1configuration/images/resourceId/imageType/imageType
সহজ আপলোড
একটি ফাইল আপলোড করার জন্য সবচেয়ে সহজ পদ্ধতি হল একটি সহজ আপলোড অনুরোধ করা। নিম্নলিখিতগুলির মধ্যে একটি সত্য হলে এই বিকল্পটি একটি ভাল পছন্দ:
সংযোগ ব্যর্থ হলে ফাইলটি সম্পূর্ণরূপে আবার আপলোড করার জন্য যথেষ্ট ছোট।
পাঠানোর জন্য কোন মেটাডেটা নেই। এটি সত্য হতে পারে যদি আপনি একটি পৃথক অনুরোধে এই সংস্থানের জন্য মেটাডেটা পাঠানোর পরিকল্পনা করেন, বা যদি কোনও মেটাডেটা সমর্থিত বা উপলব্ধ না হয়। সহজ আপলোড ব্যবহার করতে, পদ্ধতির /আপলোড URI-তে একটি POST বা PUT অনুরোধ করুন এবং ক্যোয়ারী প্যারামিটার uploadType=media যোগ করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=media
একটি সহজ আপলোড অনুরোধ করার সময় ব্যবহার করার জন্য HTTP শিরোনাম অন্তর্ভুক্ত:
Content-Type
। পাবলিশিং এপিআই রেফারেন্সে নির্দিষ্ট করা পদ্ধতির স্বীকৃত আপলোড মিডিয়া ডেটা প্রকারের একটিতে সেট করুন।Content-Length
। আপনি আপলোড করছেন বাইট সংখ্যা সেট করুন. আপনি যদি খণ্ডিত স্থানান্তর এনকোডিং ব্যবহার করেন তবে প্রয়োজন নেই৷
উদাহরণ: সহজ আপলোড
নিম্নলিখিত উদাহরণটি প্লে গেম পরিষেবা প্রকাশনা API-এর জন্য একটি সাধারণ আপলোড অনুরোধের ব্যবহার দেখায়৷
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: image/png
Content-Length: number_of_bytes_in_file
Authorization: Bearer your_auth_token
PNG data
যদি অনুরোধটি সফল হয়, সার্ভারটি HTTP 200 OK
স্ট্যাটাস কোড সহ যেকোনো মেটাডেটা প্রদান করে। যেমন:
HTTP/1.1 200
Content-Type: application/json
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
মাল্টিপার্ট আপলোড
আপনার যদি মেটাডেটা থাকে যা আপনি আপলোড করার জন্য ডেটা সহ পাঠাতে চান, আপনি একটি একক multipart/related
অনুরোধ করতে পারেন। সংযোগ ব্যর্থ হলে আপনি যে ডেটা পাঠাচ্ছেন তা সম্পূর্ণরূপে আবার আপলোড করার জন্য যথেষ্ট ছোট হলে এটি একটি ভাল পছন্দ।
মাল্টিপার্ট আপলোড ব্যবহার করতে, পদ্ধতির /আপলোড URI-তে একটি POST
বা PUT
অনুরোধ করুন এবং ক্যোয়ারী প্যারামিটার uploadType=multipart
যোগ করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=multipart
মাল্টিপার্ট আপলোড রিকোয়েস্ট করার সময় ব্যবহার করা টপ-লেভেল HTTP হেডারগুলির মধ্যে রয়েছে:
- Content-Type
। মাল্টিপার্ট/সম্পর্কিত সেট করুন এবং অনুরোধের অংশগুলি সনাক্ত করতে আপনি যে সীমানা স্ট্রিং ব্যবহার করছেন তা অন্তর্ভুক্ত করুন।
- Content-Length
। অনুরোধের অংশে মোট বাইট সংখ্যা সেট করুন। অনুরোধের মিডিয়া অংশ এই পদ্ধতির জন্য নির্দিষ্ট করা সর্বোচ্চ ফাইলের আকারের চেয়ে কম হতে হবে।
অনুরোধের মূল অংশটি একটি মাল্টিপার্ট/সম্পর্কিত কন্টেন্ট টাইপ RFC2387 হিসাবে ফর্ম্যাট করা হয়েছে এবং এতে ঠিক দুটি অংশ রয়েছে। অংশগুলি একটি সীমানা স্ট্রিং দ্বারা চিহ্নিত করা হয়, এবং চূড়ান্ত সীমানা স্ট্রিং দুটি হাইফেন দ্বারা অনুসরণ করা হয়।
মাল্টিপার্ট অনুরোধের প্রতিটি অংশের জন্য একটি অতিরিক্ত সামগ্রী-প্রকার শিরোনাম প্রয়োজন:
মেটাডেটা অংশ : প্রথমে আসতে হবে এবং কন্টেন্ট-টাইপ অবশ্যই স্বীকৃত মেটাডেটা ফর্ম্যাটের একটির সাথে মিলবে।
মিডিয়া অংশ : দ্বিতীয় স্থানে আসতে হবে, এবং বিষয়বস্তু-প্রকার অবশ্যই একটি পদ্ধতির গৃহীত মিডিয়া MIME প্রকারের সাথে মেলে।
প্রতিটি পদ্ধতির স্বীকৃত মিডিয়া MIME প্রকারের তালিকার জন্য প্রকাশনা API রেফারেন্স দেখুন এবং আপলোড করা ফাইলগুলির আকারের সীমা।
উদাহরণ: মাল্টিপার্ট আপলোড
নীচের উদাহরণটি প্লে গেমস পরিষেবা প্রকাশনা API-এর জন্য একটি মাল্টিপার্ট আপলোড অনুরোধ দেখায়৷
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=multipart HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer your_auth_token
Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length: number_of_bytes_in_entire_request_body
--foo_bar_baz
Content-Type: application/json; charset=UTF-8
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
--foo_bar_baz
Content-Type: image/png
PNG data
--foo_bar_baz--
যদি অনুরোধটি সফল হয়, সার্ভারটি HTTP 200 OK
স্ট্যাটাস কোড সহ যেকোনো মেটাডেটা প্রদান করে:
HTTP/1.1 200
Content-Type: application/json
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
পুনরায় শুরুযোগ্য আপলোড
আরও নির্ভরযোগ্যভাবে ডেটা ফাইল আপলোড করতে, আপনি পুনরায় শুরু করা আপলোড প্রোটোকল ব্যবহার করতে পারেন। এই প্রোটোকল আপনাকে একটি আপলোড অপারেশন পুনরায় শুরু করতে দেয় যখন যোগাযোগের ব্যর্থতা ডেটা প্রবাহে বাধা দেয়। এটি বিশেষভাবে উপযোগী যদি আপনি বড় ফাইল স্থানান্তর করেন এবং নেটওয়ার্ক বাধা বা অন্য কিছু ট্রান্সমিশন ব্যর্থতার সম্ভাবনা বেশি থাকে, উদাহরণস্বরূপ, মোবাইল ক্লায়েন্ট অ্যাপ থেকে আপলোড করার সময়। এটি নেটওয়ার্ক ব্যর্থতার ক্ষেত্রে আপনার ব্যান্ডউইথের ব্যবহার কমাতে পারে কারণ আপনাকে শুরু থেকে বড় ফাইল আপলোডগুলি পুনরায় চালু করতে হবে না।
পুনঃসূচনাযোগ্য আপলোড ব্যবহার করার পদক্ষেপগুলির মধ্যে রয়েছে:
একটি পুনরায় শুরু করা সেশন শুরু করুন। আপলোড URI-তে একটি প্রাথমিক অনুরোধ করুন যাতে মেটাডেটা থাকে, যদি থাকে।
পুনরায় শুরু করা সেশন URI সংরক্ষণ করুন। প্রাথমিক অনুরোধের প্রতিক্রিয়ায় ফিরে আসা সেশন URI সংরক্ষণ করুন; আপনি এই সেশনে অবশিষ্ট অনুরোধের জন্য এটি ব্যবহার করবেন। ফাইলটি আপলোড করুন।
মিডিয়া ফাইলটি পুনরায় শুরু করা সেশন URI-তে পাঠান।
এছাড়াও, যে অ্যাপগুলি পুনঃসূচনাযোগ্য আপলোড ব্যবহার করে তাদের একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করার জন্য কোড থাকতে হবে। যদি একটি আপলোড বাধাপ্রাপ্ত হয়, তাহলে কতটা ডেটা সফলভাবে প্রাপ্ত হয়েছে তা খুঁজে বের করুন এবং তারপর সেই বিন্দু থেকে আপলোড পুনরায় শুরু করুন৷
একটি পুনরায় শুরু করা সেশন শুরু করুন
একটি পুনঃসূচনাযোগ্য আপলোড শুরু করতে, পদ্ধতির /আপলোড URI-তে একটি POST
বা PUT
অনুরোধ করুন এবং ক্যোয়ারী প্যারামিটার uploadType=resumable
যোগ করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable
এই সূচনাকারী অনুরোধের জন্য, শরীরটি হয় খালি বা এতে শুধুমাত্র মেটাডেটা রয়েছে; আপনি পরবর্তী অনুরোধে আপলোড করতে চান এমন ফাইলের প্রকৃত বিষয়বস্তু স্থানান্তর করবেন।
প্রাথমিক অনুরোধের সাথে নিম্নলিখিত HTTP শিরোনামগুলি ব্যবহার করুন:
X-Upload-Content-Type
। পরবর্তী অনুরোধে স্থানান্তরিত করার জন্য আপলোড ডেটার মিডিয়া MIME প্রকারে সেট করুন৷X-Upload-Content-Length
। পরবর্তী অনুরোধে স্থানান্তরিত করার জন্য আপলোড ডেটার বাইটের সংখ্যা সেট করুন। এই অনুরোধের সময় দৈর্ঘ্য অজানা হলে, আপনি এই শিরোনামটি বাদ দিতে পারেন।মেটাডেটা প্রদান করলে:
Content-Type
। মেটাডেটার ডেটা টাইপ অনুযায়ী সেট করুন।Content-Length
। এই প্রাথমিক অনুরোধের মূল অংশে প্রদত্ত বাইটের সংখ্যা সেট করুন। আপনি যদি খণ্ডিত স্থানান্তর এনকোডিং ব্যবহার করেন তবে প্রয়োজন নেই৷
প্রতিটি পদ্ধতির স্বীকৃত মিডিয়া MIME প্রকারের তালিকার জন্য প্রকাশনা API রেফারেন্স দেখুন এবং আপলোড করা ফাইলগুলির আকারের সীমা।
উদাহরণ: পুনঃসূচনাযোগ্য অধিবেশন শুরুর অনুরোধ
নিচের উদাহরণটি দেখায় কিভাবে প্লে গেমস সার্ভিসেস পাবলিশিং এপিআই-এর জন্য পুনরায় শুরু করার যোগ্য সেশন শুরু করতে হয়।
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer your_auth_token
Content-Length: 38
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Type: image/png
X-Upload-Content-Length: 2000000
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
পরবর্তী বিভাগ বর্ণনা করে কিভাবে প্রতিক্রিয়া পরিচালনা করতে হয়।
পুনরায় শুরু করা সেশন URI সংরক্ষণ করুন
সেশন শুরুর অনুরোধ সফল হলে, API সার্ভার একটি 200 OK
HTTP স্ট্যাটাস কোড দিয়ে সাড়া দেয়। উপরন্তু, এটি একটি Location
শিরোনাম প্রদান করে যা আপনার পুনরায় শুরু করা সেশন URI নির্দিষ্ট করে। নীচের উদাহরণে দেখানো Location
হেডারে একটি upload_id
ক্যোয়ারী প্যারামিটার অংশ রয়েছে যা এই সেশনের জন্য ব্যবহার করার জন্য অনন্য আপলোড আইডি দেয়।
উদাহরণ: পুনরায় শুরু করা সেশন শুরুর প্রতিক্রিয়া
এখানে 1 ধাপে অনুরোধের প্রতিক্রিয়া রয়েছে:
HTTP/1.1 200 OK
Location: https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable&upload_id=xa298sd_sdlkj2
Content-Length: 0
Location
শিরোলেখের মান, উপরের উদাহরণের প্রতিক্রিয়া হিসাবে দেখানো হয়েছে, প্রকৃত ফাইল আপলোড করার জন্য বা আপলোড স্থিতি অনুসন্ধান করার জন্য আপনি HTTP এন্ডপয়েন্ট হিসাবে ব্যবহার করবেন সেশন URI।
সেশন URI কপি করুন এবং সংরক্ষণ করুন যাতে আপনি পরবর্তী অনুরোধের জন্য এটি ব্যবহার করতে পারেন।
ফাইলটি আপলোড করুন
ফাইলটি আপলোড করতে, আপলোড URI-তে একটি PUT
অনুরোধ পাঠান যা আপনি আগের ধাপে পেয়েছেন। আপলোড অনুরোধের বিন্যাস হল:
PUT session_uri
পুনঃসূচনাযোগ্য ফাইল আপলোডের অনুরোধ করার সময় যে HTTP শিরোনামগুলি ব্যবহার করতে হবে তার মধ্যে অন্তর্ভুক্ত Content-Length
। আপনি এই অনুরোধে আপলোড করছেন এমন বাইটের সংখ্যায় এটি সেট করুন, যা সাধারণত আপলোড ফাইলের আকার।
উদাহরণ: পুনরায় শুরুযোগ্য ফাইল আপলোডের অনুরোধ
বর্তমান উদাহরণের জন্য সম্পূর্ণ 2,000,000 বাইট পিএনজি ফাইল আপলোড করার জন্য এখানে একটি পুনরায় শুরু করার অনুরোধ রয়েছে৷
PUT https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable&upload_id=xa298sd_sdlkj2 HTTP/1.1
Content-Length: 2000000
Content-Type: image/png
bytes 0-1999999
যদি অনুরোধটি সফল হয়, সার্ভারটি এই সম্পদের সাথে যুক্ত যেকোন মেটাডেটা সহ একটি HTTP 201 Created
সাড়া দেয়। যদি পুনঃসূচনাযোগ্য অধিবেশনের প্রাথমিক অনুরোধটি একটি PUT
হয়ে থাকে, একটি বিদ্যমান সংস্থান আপডেট করার জন্য, সাফল্যের প্রতিক্রিয়া হবে 200 OK
, এই সংস্থানের সাথে যুক্ত যেকোন মেটাডেটা সহ।
আপলোডের অনুরোধ বাধাগ্রস্ত হলে বা আপনি যদি একটি HTTP 503 Service Unavailable
বা সার্ভার থেকে অন্য কোনো 5xx
প্রতিক্রিয়া পান, তাহলে একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করুন -এ বর্ণিত পদ্ধতি অনুসরণ করুন।
খণ্ডে ফাইল আপলোড করুন
পুনঃসূচনাযোগ্য আপলোডের মাধ্যমে, আপনি একটি ফাইলকে খণ্ডে বিভক্ত করতে পারেন এবং প্রতিটি খণ্ডকে ক্রমানুসারে আপলোড করার জন্য একাধিক অনুরোধ পাঠাতে পারেন। এটি পছন্দসই পদ্ধতি নয় কারণ অতিরিক্ত অনুরোধের সাথে পারফরম্যান্স খরচ যুক্ত থাকে এবং এটি সাধারণত প্রয়োজন হয় না। যাইহোক, যেকোন একক অনুরোধে স্থানান্তরিত ডেটার পরিমাণ কমাতে আপনাকে চঙ্কিং ব্যবহার করতে হতে পারে। এটি সহায়ক যখন পৃথক অনুরোধের জন্য একটি নির্দিষ্ট সময়সীমা থাকে, যেমনটি Google অ্যাপ ইঞ্জিন অনুরোধের নির্দিষ্ট শ্রেণীর জন্য সত্য। এটি আপনাকে লিগ্যাসি ব্রাউজারগুলির জন্য আপলোড অগ্রগতির ইঙ্গিত প্রদান করার মতো জিনিসগুলিও করতে দেয় যেখানে ডিফল্টরূপে আপলোড অগ্রগতি সমর্থন নেই৷
আপনি যদি খণ্ডে ডেটা আপলোড করছেন, সম্পূর্ণ ফাইল আপলোডের জন্য প্রয়োজনীয় বিষয়বস্তু-দৈর্ঘ্য শিরোনামের সাথে বিষয়বস্তু-পরিসীমা শিরোনামও প্রয়োজন:
Content-Length
। খণ্ড আকারে সেট করুন বা সম্ভবত কম, যেমনটি শেষ অনুরোধের ক্ষেত্রে হতে পারে।Content-Range
। আপনি যে ফাইলটি আপলোড করছেন তাতে কোন বাইট দেখানোর জন্য সেট করুন। উদাহরণস্বরূপ,Content-Range: bytes 0-524287/2000000
দেখায় যে আপনি একটি 2,000,000 বাইট ফাইলে প্রথম 524,288 বাইট (256 x 1024 x 2) প্রদান করছেন।
একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করুন
যদি একটি আপলোড অনুরোধ একটি প্রতিক্রিয়া পাওয়ার আগে বন্ধ করা হয় বা আপনি যদি সার্ভার থেকে একটি HTTP 503 Service Unavailable
প্রতিক্রিয়া পান, তাহলে আপনাকে বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করতে হবে৷ একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করতে, নিম্নলিখিতগুলি করুন:
অনুরোধ স্ট্যাটাস . আপলোড URI-তে একটি খালি
PUT
অনুরোধ ইস্যু করে আপলোডের বর্তমান স্থিতি জিজ্ঞাসা করুন। এই অনুরোধের জন্য, HTTP হেডারে একটিContent-Range
শিরোনাম অন্তর্ভুক্ত করা উচিত যা নির্দেশ করে যে ফাইলের বর্তমান অবস্থানটি অজানা। উদাহরণ স্বরূপ, আপনার ফাইলের মোট দৈর্ঘ্য 2,000,000 হলেContent-Range
*/2000000
এ সেট করুন। আপনি যদি ফাইলের সম্পূর্ণ আকার না জানেন, তাহলে বিষয়বস্তু-পরিসীমা*/*
এ সেট করুন।আপলোড করা বাইট সংখ্যা পান . স্ট্যাটাস কোয়েরি থেকে প্রতিক্রিয়া প্রক্রিয়া করুন। সার্ভারটি এখন পর্যন্ত কোন বাইট পেয়েছে তা নির্দিষ্ট করতে তার প্রতিক্রিয়ায়
Range
হেডার ব্যবহার করে। উদাহরণস্বরূপ,0-299999
-এর একটিRange
হেডার নির্দেশ করে যে ফাইলটির প্রথম 300,000 বাইট গৃহীত হয়েছে।অবশিষ্ট ডেটা আপলোড করুন । অবশেষে, এখন আপনি যেখানে অনুরোধটি পুনরায় শুরু করবেন তা জানেন, অবশিষ্ট ডেটা বা বর্তমান অংশ পাঠান। মনে রাখবেন যে উভয় ক্ষেত্রেই আপনাকে অবশিষ্ট ডেটাকে একটি পৃথক অংশ হিসাবে বিবেচনা করতে হবে, তাই আপনি যখন আপলোড পুনরায় শুরু করবেন তখন আপনাকে
Content-Range
শিরোনাম পাঠাতে হবে।
উদাহরণ: একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করুন
আপলোড স্ট্যাটাস অনুরোধ. নিম্নলিখিত অনুরোধটি 2,000,000 বাইট ফাইলের বর্তমান অবস্থান অজানা তা নির্দেশ করতে বিষয়বস্তু-পরিসীমা শিরোনাম ব্যবহার করে।
PUT {session_uri} HTTP/1.1 Content-Length: 0 Content-Range: bytes */2000000
প্রতিক্রিয়া থেকে এখন পর্যন্ত আপলোড করা বাইটের সংখ্যা বের করুন। সার্ভারের প্রতিক্রিয়া
Range
হেডার ব্যবহার করে নির্দেশ করে যে এটি এখন পর্যন্ত ফাইলের প্রথম 43 বাইট পেয়েছে। পুনরায় শুরু করা আপলোডটি কোথায় শুরু করবেন তা নির্ধারণ করতে রেঞ্জ হেডারের উপরের মানটি ব্যবহার করুন৷HTTP/1.1 308 Resume Incomplete Content-Length: 0 Range: 0-42
আপলোডটি যেখান থেকে ছেড়ে গেছে সেখান থেকে পুনরায় শুরু করুন। নিম্নলিখিত অনুরোধটি ফাইলের অবশিষ্ট বাইট পাঠিয়ে আপলোড পুনরায় শুরু করে, বাইট 43 থেকে শুরু হয়।
PUT {session_uri} HTTP/1.1 Content-Length: 1999957 Content-Range: bytes 43-1999999/2000000 bytes 43-1999999
ত্রুটি হ্যান্ডলিং
মিডিয়া আপলোড করার সময়, ত্রুটি পরিচালনার সাথে সম্পর্কিত কিছু সেরা অনুশীলন সম্পর্কে সচেতন হওয়া সহায়ক।
সংযোগ বাধা বা 5xx ত্রুটির কারণে ব্যর্থ হওয়া আপলোডগুলি পুনরায় শুরু করুন বা পুনরায় চেষ্টা করুন, যার মধ্যে রয়েছে:
-
500 Internal Server Error
-
502 Bad Gateway
-
503 Service Unavailable
-
504 Gateway Timeout
-
আপলোডের অনুরোধগুলি পুনরায় শুরু করার সময় বা পুনরায় চেষ্টা করার সময় কোনো
5xx
সার্ভার ত্রুটি ফেরত হলে একটি সূচকীয় ব্যাকঅফ কৌশল ব্যবহার করুন। একটি সার্ভার ওভারলোড হচ্ছে যদি এই ত্রুটি ঘটতে পারে. সূচকীয় ব্যাকঅফ উচ্চ পরিমাণের অনুরোধ বা ভারী নেটওয়ার্ক ট্র্যাফিকের সময়কালে এই ধরণের সমস্যাগুলি উপশম করতে সহায়তা করতে পারে।অন্যান্য ধরণের অনুরোধগুলি সূচকীয় ব্যাকঅফ দ্বারা পরিচালনা করা উচিত নয় তবে আপনি এখনও তাদের অনেকগুলি পুনরায় চেষ্টা করতে পারেন৷ এই অনুরোধগুলি পুনরায় চেষ্টা করার সময়, আপনি তাদের পুনরায় চেষ্টা করার সংখ্যা সীমিত করুন। উদাহরণস্বরূপ আপনার কোড একটি ত্রুটি রিপোর্ট করার আগে দশ বার বা তার কম চেষ্টা সীমাবদ্ধ করতে পারে.
শুরু থেকে সম্পূর্ণ আপলোড শুরু করে পুনরায় শুরুযোগ্য আপলোড করার সময়
404 Not Found
এবং410 Gone
ত্রুটিগুলি হ্যান্ডেল করুন।
সূচকীয় ব্যাকঅফ
এক্সপোনেনশিয়াল ব্যাকঅফ হল নেটওয়ার্ক অ্যাপ্লিকেশনগুলির জন্য একটি স্ট্যান্ডার্ড ত্রুটি পরিচালনার কৌশল যেখানে ক্লায়েন্ট পর্যায়ক্রমে একটি ক্রমবর্ধমান সময়ের সাথে একটি ব্যর্থ অনুরোধ পুনঃপ্রচার করে। যদি উচ্চ পরিমাণে অনুরোধ বা ভারী নেটওয়ার্ক ট্র্যাফিক সার্ভারের ত্রুটিগুলি ফেরত দেয়, তাহলে সূচকীয় ব্যাকঅফ সেই ত্রুটিগুলি পরিচালনা করার জন্য একটি ভাল কৌশল হতে পারে। বিপরীতভাবে, এটি নেটওয়ার্ক ভলিউম বা প্রতিক্রিয়া সময়ের সাথে সম্পর্কিত নয় এমন ত্রুটিগুলি মোকাবেলার জন্য একটি প্রাসঙ্গিক কৌশল নয়, যেমন অবৈধ অনুমোদনের শংসাপত্র বা ফাইল পাওয়া যায়নি ত্রুটি৷
সঠিকভাবে ব্যবহার করা হলে, সূচকীয় ব্যাকঅফ ব্যান্ডউইথ ব্যবহারের দক্ষতা বাড়ায়, সফল প্রতিক্রিয়া পাওয়ার জন্য প্রয়োজনীয় অনুরোধের সংখ্যা হ্রাস করে এবং সমসাময়িক পরিবেশে অনুরোধের থ্রুপুট সর্বাধিক করে।
সাধারণ সূচকীয় ব্যাকঅফ বাস্তবায়নের জন্য প্রবাহ নিম্নরূপ:
- API এ একটি অনুরোধ করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা নির্দেশ করে যে আপনার অনুরোধটি পুনরায় চেষ্টা করা উচিত। - 1 সেকেন্ড + random_number_milliseconds অপেক্ষা করুন এবং অনুরোধটি আবার চেষ্টা করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা নির্দেশ করে যে আপনার অনুরোধটি পুনরায় চেষ্টা করা উচিত। - 2 সেকেন্ড + এলোমেলো_সংখ্যা_মিলিসেকেন্ড অপেক্ষা করুন এবং অনুরোধটি পুনরায় চেষ্টা করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা নির্দেশ করে যে আপনার অনুরোধটি পুনরায় চেষ্টা করা উচিত। - 4 সেকেন্ড + এলোমেলো_সংখ্যা_মিলিসেকেন্ড অপেক্ষা করুন এবং অনুরোধটি পুনরায় চেষ্টা করুন।
- একটি
HTTP 503 response
পান, যা নির্দেশ করে যে আপনার অনুরোধটি পুনরায় চেষ্টা করা উচিত৷ - 8 সেকেন্ড + এলোমেলো_সংখ্যা_মিলিসেকেন্ড অপেক্ষা করুন এবং অনুরোধটি পুনরায় চেষ্টা করুন।
- একটি
HTTP 503 response
পান, যা নির্দেশ করে যে আপনার অনুরোধটি পুনরায় চেষ্টা করা উচিত৷ - 16 সেকেন্ড + এলোমেলো_সংখ্যা_মিলিসেকেন্ড অপেক্ষা করুন এবং অনুরোধটি পুনরায় চেষ্টা করুন।
- থামো। একটি ত্রুটি রিপোর্ট বা লগ.
উপরের তালিকায়, এলোমেলো_সংখ্যা_মিলিসেকেন্ড হল 1000 এর চেয়ে কম বা সমান মিলিসেকেন্ডের একটি এলোমেলো সংখ্যা। এটি প্রয়োজনীয়, যেহেতু একটি ছোট র্যান্ডম বিলম্ব প্রবর্তন করা লোডকে আরও সমানভাবে বিতরণ করতে এবং সার্ভারের স্ট্যাম্পিং হওয়ার সম্ভাবনা এড়াতে সহায়তা করে। এলোমেলো_সংখ্যা_মিলিসেকেন্ডের মান প্রতিটি অপেক্ষার পরে পুনরায় সংজ্ঞায়িত করা আবশ্যক।
n 5 হলে অ্যালগরিদম শেষ হতে সেট করা হয়। এই সিলিং ক্লায়েন্টদের অসীমভাবে পুনরায় চেষ্টা করতে বাধা দেয় এবং একটি অনুরোধ "একটি পুনরুদ্ধারযোগ্য ত্রুটি" বলে গণ্য হওয়ার আগে প্রায় 32 সেকেন্ডের মোট বিলম্ব হয়। একটি বৃহত্তর সর্বাধিক সংখ্যক পুনঃপ্রয়াস ঠিক আছে, বিশেষ করে যদি একটি দীর্ঘ আপলোড চলছে; শুধু যুক্তিসঙ্গত কিছুতে পুনঃপ্রচেষ্টা বিলম্ব ক্যাপ করতে ভুলবেন না, বলুন, এক মিনিটেরও কম।
API ক্লায়েন্ট লাইব্রেরি গাইড
,প্লে গেম সার্ভিসেস পাবলিশিং এপিআই আপনাকে একটি গেম রিসোর্সের জন্য একটি ছবি আপলোড করতে দেয়।
আপলোড অপশন
প্লে গেম সার্ভিসেস পাবলিশিং API আপনাকে নির্দিষ্ট ধরণের বাইনারি ডেটা বা মিডিয়া আপলোড করতে দেয়। আপনি যে ডেটা আপলোড করতে পারেন তার নির্দিষ্ট বৈশিষ্ট্যগুলি মিডিয়া আপলোডগুলিকে সমর্থন করে এমন কোনও পদ্ধতির জন্য রেফারেন্স পৃষ্ঠায় উল্লেখ করা হয়েছে:
সর্বোচ্চ আপলোড ফাইলের আকার : আপনি এই পদ্ধতিতে সর্বাধিক পরিমাণ ডেটা সংরক্ষণ করতে পারেন।
গৃহীত মিডিয়া MIME প্রকার : আপনি এই পদ্ধতি ব্যবহার করে বাইনারি ডেটা সংরক্ষণ করতে পারেন।
আপনি নিম্নলিখিত উপায়ে আপলোড অনুরোধ করতে পারেন. আপলোড টাইপ অনুরোধ প্যারামিটারের সাথে আপনি যে পদ্ধতিটি ব্যবহার করছেন তা নির্দিষ্ট করুন।
সহজ আপলোড :
uploadType=media
। ছোট ফাইল দ্রুত স্থানান্তরের জন্য, উদাহরণস্বরূপ, 5 MB বা তার কম।মাল্টিপার্ট আপলোড :
uploadType=multipart
। ছোট ফাইল এবং মেটাডেটা দ্রুত স্থানান্তরের জন্য; ফাইলটিকে মেটাডেটা সহ স্থানান্তর করে যা এটি বর্ণনা করে, সমস্ত একটি একক অনুরোধে।পুনঃসূচনাযোগ্য আপলোড :
uploadType=resumable
। নির্ভরযোগ্য স্থানান্তরের জন্য, বিশেষ করে বড় ফাইলগুলির সাথে গুরুত্বপূর্ণ। এই পদ্ধতির সাহায্যে, আপনি একটি সেশন শুরু করার অনুরোধ ব্যবহার করেন, যা ঐচ্ছিকভাবে মেটাডেটা অন্তর্ভুক্ত করতে পারে। এটি বেশিরভাগ অ্যাপ্লিকেশনের জন্য ব্যবহার করার জন্য একটি ভাল কৌশল, যেহেতু এটি আপলোড প্রতি একটি অতিরিক্ত HTTP অনুরোধের খরচে ছোট ফাইলগুলির জন্যও কাজ করে।
আপনি যখন মিডিয়া আপলোড করেন, আপনি একটি বিশেষ URI ব্যবহার করেন। আসলে, মিডিয়া আপলোডগুলিকে সমর্থন করে এমন পদ্ধতিগুলির দুটি URI শেষ পয়েন্ট রয়েছে:
মিডিয়ার জন্য /আপলোড ইউআরআই । আপলোড এন্ডপয়েন্টের ফর্ম্যাট হল "/আপলোড" উপসর্গ সহ স্ট্যান্ডার্ড রিসোর্স URI। মিডিয়া ডেটা স্থানান্তর করার সময় এই URI ব্যবহার করুন।
উদাহরণ:
POST /upload/games/v1configuration/images/resourceId/imageType/imageType
মেটাডেটার জন্য স্ট্যান্ডার্ড রিসোর্স URI। যদি সম্পদে কোনো ডেটা ক্ষেত্র থাকে, সেই ক্ষেত্রগুলি আপলোড করা ফাইলের বর্ণনা মেটাডেটা সংরক্ষণ করতে ব্যবহৃত হয়। মেটাডেটা মান তৈরি বা আপডেট করার সময় আপনি এই URI ব্যবহার করতে পারেন।
উদাহরণ:
POST /games/v1configuration/images/resourceId/imageType/imageType
সহজ আপলোড
একটি ফাইল আপলোড করার জন্য সবচেয়ে সহজ পদ্ধতি হল একটি সহজ আপলোড অনুরোধ করা। নিম্নলিখিতগুলির মধ্যে একটি সত্য হলে এই বিকল্পটি একটি ভাল পছন্দ:
সংযোগ ব্যর্থ হলে ফাইলটি সম্পূর্ণরূপে আবার আপলোড করার জন্য যথেষ্ট ছোট।
পাঠানোর জন্য কোন মেটাডেটা নেই। এটি সত্য হতে পারে যদি আপনি একটি পৃথক অনুরোধে এই সংস্থানের জন্য মেটাডেটা পাঠানোর পরিকল্পনা করেন, বা যদি কোনও মেটাডেটা সমর্থিত বা উপলব্ধ না হয়। সহজ আপলোড ব্যবহার করতে, পদ্ধতির /আপলোড URI-তে একটি POST বা PUT অনুরোধ করুন এবং ক্যোয়ারী প্যারামিটার uploadType=media যোগ করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=media
একটি সহজ আপলোড অনুরোধ করার সময় ব্যবহার করার জন্য HTTP শিরোনাম অন্তর্ভুক্ত:
Content-Type
। পাবলিশিং এপিআই রেফারেন্সে নির্দিষ্ট করা পদ্ধতির স্বীকৃত আপলোড মিডিয়া ডেটা প্রকারের একটিতে সেট করুন।Content-Length
। আপনি আপলোড করছেন বাইট সংখ্যা সেট করুন. আপনি যদি খণ্ডিত স্থানান্তর এনকোডিং ব্যবহার করেন তবে প্রয়োজন নেই৷
উদাহরণ: সহজ আপলোড
নিম্নলিখিত উদাহরণটি প্লে গেম পরিষেবা প্রকাশনা API-এর জন্য একটি সাধারণ আপলোড অনুরোধের ব্যবহার দেখায়৷
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: image/png
Content-Length: number_of_bytes_in_file
Authorization: Bearer your_auth_token
PNG data
যদি অনুরোধটি সফল হয়, সার্ভারটি HTTP 200 OK
স্ট্যাটাস কোড সহ যেকোনো মেটাডেটা প্রদান করে। যেমন:
HTTP/1.1 200
Content-Type: application/json
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
মাল্টিপার্ট আপলোড
আপনার যদি মেটাডেটা থাকে যা আপনি আপলোড করার জন্য ডেটা সহ পাঠাতে চান, আপনি একটি একক multipart/related
অনুরোধ করতে পারেন। সংযোগ ব্যর্থ হলে আপনি যে ডেটা পাঠাচ্ছেন তা সম্পূর্ণরূপে আবার আপলোড করার জন্য যথেষ্ট ছোট হলে এটি একটি ভাল পছন্দ।
মাল্টিপার্ট আপলোড ব্যবহার করতে, পদ্ধতির /আপলোড URI-তে একটি POST
বা PUT
অনুরোধ করুন এবং ক্যোয়ারী প্যারামিটার uploadType=multipart
যোগ করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=multipart
মাল্টিপার্ট আপলোড রিকোয়েস্ট করার সময় ব্যবহার করা টপ-লেভেল HTTP হেডারগুলির মধ্যে রয়েছে:
- Content-Type
। মাল্টিপার্ট/সম্পর্কিত সেট করুন এবং অনুরোধের অংশগুলি সনাক্ত করতে আপনি যে সীমানা স্ট্রিং ব্যবহার করছেন তা অন্তর্ভুক্ত করুন।
- Content-Length
। অনুরোধের অংশে মোট বাইট সংখ্যা সেট করুন। অনুরোধের মিডিয়া অংশ এই পদ্ধতির জন্য নির্দিষ্ট করা সর্বোচ্চ ফাইলের আকারের চেয়ে কম হতে হবে।
অনুরোধের মূল অংশটি একটি মাল্টিপার্ট/সম্পর্কিত কন্টেন্ট টাইপ RFC2387 হিসাবে ফর্ম্যাট করা হয়েছে এবং এতে ঠিক দুটি অংশ রয়েছে। অংশগুলি একটি সীমানা স্ট্রিং দ্বারা চিহ্নিত করা হয়, এবং চূড়ান্ত সীমানা স্ট্রিং দুটি হাইফেন দ্বারা অনুসরণ করা হয়।
মাল্টিপার্ট অনুরোধের প্রতিটি অংশের জন্য একটি অতিরিক্ত সামগ্রী-প্রকার শিরোনাম প্রয়োজন:
মেটাডেটা অংশ : প্রথমে আসতে হবে এবং কন্টেন্ট-টাইপ অবশ্যই স্বীকৃত মেটাডেটা ফর্ম্যাটের একটির সাথে মিলবে।
মিডিয়া অংশ : দ্বিতীয় স্থানে আসতে হবে, এবং বিষয়বস্তু-প্রকার অবশ্যই একটি পদ্ধতির গৃহীত মিডিয়া MIME প্রকারের সাথে মেলে।
প্রতিটি পদ্ধতির স্বীকৃত মিডিয়া MIME প্রকারের তালিকার জন্য প্রকাশনা API রেফারেন্স দেখুন এবং আপলোড করা ফাইলগুলির আকারের সীমা।
উদাহরণ: মাল্টিপার্ট আপলোড
নীচের উদাহরণটি প্লে গেমস পরিষেবা প্রকাশনা API-এর জন্য একটি মাল্টিপার্ট আপলোড অনুরোধ দেখায়৷
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=multipart HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer your_auth_token
Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length: number_of_bytes_in_entire_request_body
--foo_bar_baz
Content-Type: application/json; charset=UTF-8
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
--foo_bar_baz
Content-Type: image/png
PNG data
--foo_bar_baz--
যদি অনুরোধটি সফল হয়, সার্ভারটি HTTP 200 OK
স্ট্যাটাস কোড সহ যেকোনো মেটাডেটা প্রদান করে:
HTTP/1.1 200
Content-Type: application/json
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
পুনরায় শুরুযোগ্য আপলোড
আরও নির্ভরযোগ্যভাবে ডেটা ফাইল আপলোড করতে, আপনি পুনরায় শুরু করা আপলোড প্রোটোকল ব্যবহার করতে পারেন। এই প্রোটোকল আপনাকে একটি আপলোড অপারেশন পুনরায় শুরু করতে দেয় যখন যোগাযোগের ব্যর্থতা ডেটা প্রবাহে বাধা দেয়। এটি বিশেষভাবে উপযোগী যদি আপনি বড় ফাইল স্থানান্তর করেন এবং নেটওয়ার্ক বাধা বা অন্য কিছু ট্রান্সমিশন ব্যর্থতার সম্ভাবনা বেশি থাকে, উদাহরণস্বরূপ, মোবাইল ক্লায়েন্ট অ্যাপ থেকে আপলোড করার সময়। এটি নেটওয়ার্ক ব্যর্থতার ক্ষেত্রে আপনার ব্যান্ডউইথের ব্যবহার কমাতে পারে কারণ আপনাকে শুরু থেকে বড় ফাইল আপলোডগুলি পুনরায় চালু করতে হবে না।
পুনঃসূচনাযোগ্য আপলোড ব্যবহার করার পদক্ষেপগুলির মধ্যে রয়েছে:
একটি পুনরায় শুরু করা সেশন শুরু করুন। আপলোড URI-তে একটি প্রাথমিক অনুরোধ করুন যাতে মেটাডেটা থাকে, যদি থাকে।
পুনরায় শুরু করা সেশন URI সংরক্ষণ করুন। প্রাথমিক অনুরোধের প্রতিক্রিয়ায় ফিরে আসা সেশন URI সংরক্ষণ করুন; আপনি এই সেশনে অবশিষ্ট অনুরোধের জন্য এটি ব্যবহার করবেন। ফাইলটি আপলোড করুন।
মিডিয়া ফাইলটি পুনরায় শুরু করা সেশন URI-তে পাঠান।
এছাড়াও, যে অ্যাপগুলি পুনঃসূচনাযোগ্য আপলোড ব্যবহার করে তাদের একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করার জন্য কোড থাকতে হবে। যদি একটি আপলোড বাধাপ্রাপ্ত হয়, তাহলে কতটা ডেটা সফলভাবে প্রাপ্ত হয়েছে তা খুঁজে বের করুন এবং তারপর সেই বিন্দু থেকে আপলোড পুনরায় শুরু করুন৷
একটি পুনরায় শুরু করা সেশন শুরু করুন
একটি পুনঃসূচনাযোগ্য আপলোড শুরু করতে, পদ্ধতির /আপলোড URI-তে একটি POST
বা PUT
অনুরোধ করুন এবং ক্যোয়ারী প্যারামিটার uploadType=resumable
যোগ করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable
এই সূচনাকারী অনুরোধের জন্য, শরীরটি হয় খালি বা এতে শুধুমাত্র মেটাডেটা রয়েছে; আপনি পরবর্তী অনুরোধে আপলোড করতে চান এমন ফাইলের প্রকৃত বিষয়বস্তু স্থানান্তর করবেন।
প্রাথমিক অনুরোধের সাথে নিম্নলিখিত HTTP শিরোনামগুলি ব্যবহার করুন:
X-Upload-Content-Type
। পরবর্তী অনুরোধে স্থানান্তরিত করার জন্য আপলোড ডেটার মিডিয়া MIME প্রকারে সেট করুন৷X-Upload-Content-Length
। পরবর্তী অনুরোধে স্থানান্তরিত করার জন্য আপলোড ডেটার বাইটের সংখ্যা সেট করুন। এই অনুরোধের সময় দৈর্ঘ্য অজানা হলে, আপনি এই শিরোনামটি বাদ দিতে পারেন।মেটাডেটা প্রদান করলে:
Content-Type
। মেটাডেটার ডেটা টাইপ অনুযায়ী সেট করুন।Content-Length
। এই প্রাথমিক অনুরোধের মূল অংশে প্রদত্ত বাইটের সংখ্যা সেট করুন। আপনি যদি খণ্ডিত স্থানান্তর এনকোডিং ব্যবহার করেন তবে প্রয়োজন নেই৷
প্রতিটি পদ্ধতির স্বীকৃত মিডিয়া MIME প্রকারের তালিকার জন্য প্রকাশনা API রেফারেন্স দেখুন এবং আপলোড করা ফাইলগুলির আকারের সীমা।
উদাহরণ: পুনঃসূচনাযোগ্য অধিবেশন শুরুর অনুরোধ
নিচের উদাহরণটি দেখায় কিভাবে প্লে গেমস সার্ভিসেস পাবলিশিং এপিআই-এর জন্য পুনরায় শুরু করার যোগ্য সেশন শুরু করতে হয়।
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer your_auth_token
Content-Length: 38
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Type: image/png
X-Upload-Content-Length: 2000000
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
পরবর্তী বিভাগ বর্ণনা করে কিভাবে প্রতিক্রিয়া পরিচালনা করতে হয়।
পুনরায় শুরু করা সেশন URI সংরক্ষণ করুন
সেশন শুরুর অনুরোধ সফল হলে, API সার্ভার একটি 200 OK
HTTP স্ট্যাটাস কোড দিয়ে সাড়া দেয়। উপরন্তু, এটি একটি Location
শিরোনাম প্রদান করে যা আপনার পুনরায় শুরু করা সেশন URI নির্দিষ্ট করে। নীচের উদাহরণে দেখানো Location
হেডারে একটি upload_id
ক্যোয়ারী প্যারামিটার অংশ রয়েছে যা এই সেশনের জন্য ব্যবহার করার জন্য অনন্য আপলোড আইডি দেয়।
উদাহরণ: পুনরায় শুরু করা সেশন শুরুর প্রতিক্রিয়া
এখানে 1 ধাপে অনুরোধের প্রতিক্রিয়া রয়েছে:
HTTP/1.1 200 OK
Location: https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable&upload_id=xa298sd_sdlkj2
Content-Length: 0
Location
শিরোলেখের মান, উপরের উদাহরণের প্রতিক্রিয়া হিসাবে দেখানো হয়েছে, প্রকৃত ফাইল আপলোড করার জন্য বা আপলোড স্থিতি অনুসন্ধান করার জন্য আপনি HTTP এন্ডপয়েন্ট হিসাবে ব্যবহার করবেন সেশন URI।
সেশন URI কপি করুন এবং সংরক্ষণ করুন যাতে আপনি পরবর্তী অনুরোধের জন্য এটি ব্যবহার করতে পারেন।
ফাইলটি আপলোড করুন
ফাইলটি আপলোড করতে, আপলোড URI-তে একটি PUT
অনুরোধ পাঠান যা আপনি আগের ধাপে পেয়েছেন। আপলোড অনুরোধের বিন্যাস হল:
PUT session_uri
পুনঃসূচনাযোগ্য ফাইল আপলোডের অনুরোধ করার সময় যে HTTP শিরোনামগুলি ব্যবহার করতে হবে তার মধ্যে অন্তর্ভুক্ত Content-Length
। আপনি এই অনুরোধে আপলোড করছেন এমন বাইটের সংখ্যায় এটি সেট করুন, যা সাধারণত আপলোড ফাইলের আকার।
উদাহরণ: পুনরায় শুরুযোগ্য ফাইল আপলোডের অনুরোধ
বর্তমান উদাহরণের জন্য সম্পূর্ণ 2,000,000 বাইট পিএনজি ফাইল আপলোড করার জন্য এখানে একটি পুনরায় শুরু করার অনুরোধ রয়েছে৷
PUT https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable&upload_id=xa298sd_sdlkj2 HTTP/1.1
Content-Length: 2000000
Content-Type: image/png
bytes 0-1999999
যদি অনুরোধটি সফল হয়, সার্ভারটি এই সম্পদের সাথে যুক্ত যেকোন মেটাডেটা সহ একটি HTTP 201 Created
সাড়া দেয়। যদি পুনঃসূচনাযোগ্য অধিবেশনের প্রাথমিক অনুরোধটি একটি PUT
হয়ে থাকে, একটি বিদ্যমান সংস্থান আপডেট করার জন্য, সাফল্যের প্রতিক্রিয়া হবে 200 OK
, এই সংস্থানের সাথে যুক্ত যেকোন মেটাডেটা সহ।
আপলোডের অনুরোধ বাধাগ্রস্ত হলে বা আপনি যদি একটি HTTP 503 Service Unavailable
বা সার্ভার থেকে অন্য কোনো 5xx
প্রতিক্রিয়া পান, তাহলে একটি বাধাপ্রাপ্ত আপলোড পুনরায় শুরু করুন -এ বর্ণিত পদ্ধতি অনুসরণ করুন।
খণ্ডে ফাইল আপলোড করুন
পুনঃসূচনাযোগ্য আপলোডের মাধ্যমে, আপনি একটি ফাইলকে খণ্ডে বিভক্ত করতে পারেন এবং প্রতিটি খণ্ডকে ক্রমানুসারে আপলোড করার জন্য একাধিক অনুরোধ পাঠাতে পারেন। এটি পছন্দসই পদ্ধতি নয় কারণ অতিরিক্ত অনুরোধের সাথে পারফরম্যান্স খরচ যুক্ত থাকে এবং এটি সাধারণত প্রয়োজন হয় না। যাইহোক, যেকোন একক অনুরোধে স্থানান্তরিত ডেটার পরিমাণ কমাতে আপনাকে চঙ্কিং ব্যবহার করতে হতে পারে। এটি সহায়ক যখন পৃথক অনুরোধের জন্য একটি নির্দিষ্ট সময়সীমা থাকে, যেমনটি Google অ্যাপ ইঞ্জিন অনুরোধের নির্দিষ্ট শ্রেণীর জন্য সত্য। এটি আপনাকে লিগ্যাসি ব্রাউজারগুলির জন্য আপলোড অগ্রগতির ইঙ্গিত প্রদান করার মতো জিনিসগুলিও করতে দেয় যেখানে ডিফল্টরূপে আপলোড অগ্রগতি সমর্থন নেই৷
আপনি যদি খণ্ডে ডেটা আপলোড করছেন, সম্পূর্ণ ফাইল আপলোডের জন্য প্রয়োজনীয় বিষয়বস্তু-দৈর্ঘ্য শিরোনামের সাথে বিষয়বস্তু-পরিসীমা শিরোনামও প্রয়োজন:
Content-Length
। খণ্ড আকারে সেট করুন বা সম্ভবত কম, যেমনটি শেষ অনুরোধের ক্ষেত্রে হতে পারে।Content-Range
। আপনি যে ফাইলটি আপলোড করছেন তাতে কোন বাইট দেখানোর জন্য সেট করুন। উদাহরণস্বরূপ,Content-Range: bytes 0-524287/2000000
দেখায় যে আপনি একটি 2,000,000 বাইট ফাইলে প্রথম 524,288 বাইট (256 x 1024 x 2) প্রদান করছেন।
একটি বাধা আপলোড পুনরায় শুরু করুন
যদি কোনও প্রতিক্রিয়া পাওয়ার আগে যদি কোনও আপলোডের অনুরোধটি সমাপ্ত হয় বা আপনি যদি সার্ভার থেকে কোনও HTTP 503 Service Unavailable
প্রতিক্রিয়া পান তবে আপনাকে বাধা আপলোডটি আবার শুরু করতে হবে। একটি বাধা আপলোড পুনরায় শুরু করতে, নিম্নলিখিতগুলি করুন:
অনুরোধ স্থিতি । আপলোড ইউআরআই -তে একটি খালি
PUT
অনুরোধ জারি করে আপলোডের বর্তমান স্থিতি জিজ্ঞাসা করুন। এই অনুরোধের জন্য, এইচটিটিপি হেডারগুলিতে একটিContent-Range
শিরোনাম অন্তর্ভুক্ত করা উচিত যা ইঙ্গিত করে যে ফাইলের বর্তমান অবস্থানটি অজানা। উদাহরণস্বরূপ, যদি আপনার মোট ফাইলের দৈর্ঘ্য 2,000,000 হয় তবেContent-Range
*/2000000
এ সেট করুন। আপনি যদি ফাইলটির পুরো আকারটি না জানেন তবে সামগ্রী-পরিসীমাটি*/*
এ সেট করুন।আপলোড করা বাইটের সংখ্যা পান । স্থিতি ক্যোয়ারী থেকে প্রতিক্রিয়া প্রক্রিয়া। সার্ভারটি এখন পর্যন্ত কোন বাইটগুলি পেয়েছে তা নির্দিষ্ট করার জন্য তার প্রতিক্রিয়াতে
Range
শিরোনাম ব্যবহার করে। উদাহরণস্বরূপ,0-299999
এর একটিRange
শিরোনাম ইঙ্গিত দেয় যে ফাইলটির প্রথম 300,000 বাইট প্রাপ্ত হয়েছে।অবশিষ্ট ডেটা আপলোড করুন । শেষ অবধি, এখন আপনি কোথায় অনুরোধটি আবার শুরু করবেন তা জানেন, অবশিষ্ট ডেটা বা বর্তমান অংশটি প্রেরণ করুন। নোট করুন যে আপনাকে বাকী ডেটা উভয় ক্ষেত্রেই পৃথক অংশ হিসাবে বিবেচনা করতে হবে, সুতরাং আপনি আপলোডটি পুনরায় চালু করার সময় আপনাকে
Content-Range
শিরোনামটি প্রেরণ করতে হবে।
উদাহরণ: একটি বাধা আপলোড পুনরায় শুরু করুন
আপলোড স্থিতি অনুরোধ। নিম্নলিখিত অনুরোধটি কন্টেন্ট-রেঞ্জের শিরোনামটি ব্যবহার করে এটি নির্দেশ করতে যে 2,000,000 বাইট ফাইলে বর্তমান অবস্থানটি অজানা।
PUT {session_uri} HTTP/1.1 Content-Length: 0 Content-Range: bytes */2000000
প্রতিক্রিয়া থেকে এখনও পর্যন্ত আপলোড করা বাইটের সংখ্যা বের করুন। সার্ভারের প্রতিক্রিয়াটি এখনও পর্যন্ত ফাইলের প্রথম 43 বাইট পেয়েছে তা নির্দেশ করতে
Range
শিরোনাম ব্যবহার করে। কোথায় পুনরায় চালু করা আপলোড শুরু করবেন তা নির্ধারণ করতে রেঞ্জের শিরোনামের উপরের মানটি ব্যবহার করুন।HTTP/1.1 308 Resume Incomplete Content-Length: 0 Range: 0-42
যেখানে এটি ছেড়ে গেছে সেই বিন্দু থেকে আপলোডটি আবার শুরু করুন। নিম্নলিখিত অনুরোধটি বাইট 43 থেকে শুরু করে ফাইলের অবশিষ্ট বাইটগুলি প্রেরণ করে আপলোডটি পুনরায় শুরু করে।
PUT {session_uri} HTTP/1.1 Content-Length: 1999957 Content-Range: bytes 43-1999999/2000000 bytes 43-1999999
ত্রুটি হ্যান্ডলিং
মিডিয়া আপলোড করার সময়, ত্রুটি পরিচালনা সম্পর্কিত কিছু সেরা অনুশীলন সম্পর্কে সচেতন হওয়া সহায়ক।
সংযোগ বাধা বা কোনও 5xx ত্রুটির কারণে ব্যর্থ হওয়া আপলোডগুলি পুনরায় শুরু করুন বা পুনরায় চেষ্টা করুন: সহ:
-
500 Internal Server Error
-
502 Bad Gateway
-
503 Service Unavailable
-
504 Gateway Timeout
-
কোনও
5xx
সার্ভার ত্রুটি যদি পুনরায় চালু বা আপলোডের অনুরোধগুলি পুনরায় চেষ্টা করার সময় ফিরে আসে তবে একটি তাত্পর্যপূর্ণ ব্যাকঅফ কৌশল ব্যবহার করুন। কোনও সার্ভার অতিরিক্ত বোঝা হয়ে গেলে এই ত্রুটিগুলি ঘটতে পারে। তাত্পর্যপূর্ণ ব্যাকঅফ উচ্চ পরিমাণের অনুরোধ বা ভারী নেটওয়ার্ক ট্র্যাফিকের সময়কালে এই ধরণের সমস্যাগুলি দূর করতে সহায়তা করতে পারে।অন্যান্য ধরণের অনুরোধগুলি তাত্পর্যপূর্ণ ব্যাকঅফ দ্বারা পরিচালনা করা উচিত নয় তবে আপনি এখনও সেগুলির বেশ কয়েকটি পুনরায় চেষ্টা করতে পারেন। এই অনুরোধগুলি পুনরায় চেষ্টা করার সময়, আপনি তাদের পুনরায় চেষ্টা করার সংখ্যা সীমাবদ্ধ করুন। উদাহরণস্বরূপ আপনার কোডটি কোনও ত্রুটির প্রতিবেদন করার আগে দশটি পুনরুদ্ধার বা তার চেয়ে কম সীমাবদ্ধ করতে পারে।
হ্যান্ডেল
404 Not Found
এবং410 Gone
ত্রুটিগুলি শুরু থেকে পুরো আপলোড শুরু করে পুনরায় অঙ্কিত আপলোডগুলি করার সময় ত্রুটিগুলি।
সূচকীয় ব্যাকঅফ
এক্সফোনেনশিয়াল ব্যাকঅফ হ'ল নেটওয়ার্ক অ্যাপ্লিকেশনগুলির জন্য কৌশল হ্যান্ডলিং কৌশল যেখানে ক্লায়েন্ট পর্যায়ক্রমে ক্রমবর্ধমান সময়ের তুলনায় একটি ব্যর্থ অনুরোধটি পুনরায় চেষ্টা করে। যদি একটি উচ্চ পরিমাণের অনুরোধ বা ভারী নেটওয়ার্ক ট্র্যাফিকের ফলে সার্ভারটি ত্রুটিগুলি ফিরিয়ে দেয় তবে এক্সফোনেনশিয়াল ব্যাকঅফ এই ত্রুটিগুলি পরিচালনা করার জন্য একটি ভাল কৌশল হতে পারে। বিপরীতে, নেটওয়ার্ক ভলিউম বা প্রতিক্রিয়ার সময়গুলির সাথে সম্পর্কিত না হওয়া ত্রুটিগুলি যেমন অবৈধ অনুমোদনের শংসাপত্রগুলি বা ফাইলের ত্রুটি পাওয়া যায় না তার সাথে সম্পর্কিত ত্রুটিগুলি মোকাবেলার জন্য এটি কোনও প্রাসঙ্গিক কৌশল নয়।
সঠিকভাবে ব্যবহৃত, তাত্পর্যপূর্ণ ব্যাকঅফ ব্যান্ডউইথ ব্যবহারের দক্ষতা বৃদ্ধি করে, একটি সফল প্রতিক্রিয়া পাওয়ার জন্য প্রয়োজনীয় অনুরোধের সংখ্যা হ্রাস করে এবং একযোগে পরিবেশে অনুরোধগুলির থ্রুপুটকে সর্বাধিক করে তোলে।
সাধারণ তাত্পর্যপূর্ণ ব্যাক অফ বাস্তবায়নের প্রবাহটি নিম্নরূপ:
- এপিআইয়ের কাছে একটি অনুরোধ করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 1 সেকেন্ড + এলোমেলো_নম্বার_মিলিসেকেন্ডস অপেক্ষা করুন এবং অনুরোধটি পুনরায় চেষ্টা করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 2 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 4 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- একটি
HTTP 503 response
পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 8 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- একটি
HTTP 503 response
পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 16 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- থামো। একটি ত্রুটি রিপোর্ট বা লগ করুন।
উপরের তালিকায়, এলোমেলো_নম্বার_মিলিসেকেন্ডস 1000 এর চেয়ে কম বা সমান মিলিসেকেন্ডের একটি এলোমেলো সংখ্যক। এটি প্রয়োজনীয়, যেহেতু একটি ছোট এলোমেলো বিলম্ব প্রবর্তন করা লোডটিকে আরও সমানভাবে বিতরণ করতে সহায়তা করে এবং সার্ভারকে স্ট্যাম্পড করার সম্ভাবনা এড়াতে সহায়তা করে। এলোমেলো_নম্বার_মিলিসেকেন্ডগুলির মান প্রতিটি অপেক্ষার পরে পুনরায় সংজ্ঞায়িত করতে হবে।
অ্যালগরিদমটি যখন এন 5 হয় তখন সমাপ্ত হতে চলেছে। এই সিলিং ক্লায়েন্টদের অসীমভাবে পুনরায় চেষ্টা করতে বাধা দেয় এবং একটি অনুরোধ "একটি অপ্রয়োজনীয় ত্রুটি" হিসাবে বিবেচিত হওয়ার আগে প্রায় 32 সেকেন্ডের মোট বিলম্বের ফলস্বরূপ। একটি বৃহত্তর সর্বাধিক সংখ্যক পুনরুদ্ধার ঠিক আছে, বিশেষত যদি দীর্ঘ আপলোড অগ্রগতি হয়; যুক্তিসঙ্গত কোনও কিছুতে পুনরায় চেষ্টা করতে নিশ্চিত হন, এক মিনিটেরও কম সময় বলুন।
এপিআই ক্লায়েন্ট লাইব্রেরি গাইড
,প্লে গেমস সার্ভিসেস পাবলিশিং এপিআই আপনাকে গেম রিসোর্সের জন্য একটি চিত্র আপলোড করতে দেয়।
আপলোড অপশন
প্লে গেমস সার্ভিসেস পাবলিশিং এপিআই আপনাকে নির্দিষ্ট ধরণের বাইনারি ডেটা বা মিডিয়া আপলোড করতে দেয়। আপনি আপলোড করতে পারেন এমন ডেটার নির্দিষ্ট বৈশিষ্ট্যগুলি মিডিয়া আপলোডগুলি সমর্থন করে এমন কোনও পদ্ধতির জন্য রেফারেন্স পৃষ্ঠায় নির্দিষ্ট করা হয়েছে:
সর্বাধিক আপলোড ফাইলের আকার : আপনি এই পদ্ধতির সাহায্যে সর্বাধিক পরিমাণ ডেটা সঞ্চয় করতে পারেন।
স্বীকৃত মিডিয়া মাইম প্রকারগুলি : এই পদ্ধতিটি ব্যবহার করে আপনি যে ধরণের বাইনারি ডেটা সংরক্ষণ করতে পারেন।
আপনি নিম্নলিখিত যে কোনও উপায়ে আপলোড অনুরোধ করতে পারেন। আপনি আপলোডটাইপ অনুরোধ প্যারামিটারের সাথে আপনি যে পদ্ধতিটি ব্যবহার করছেন তা নির্দিষ্ট করুন।
সাধারণ আপলোড :
uploadType=media
। ছোট ফাইলগুলির দ্রুত স্থানান্তরের জন্য, উদাহরণস্বরূপ, 5 এমবি বা তারও কম।মাল্টিপার্ট আপলোড :
uploadType=multipart
। ছোট ফাইল এবং মেটাডেটা দ্রুত স্থানান্তর জন্য; মেটাডেটা সহ ফাইলটি স্থানান্তর করে যা এটি বর্ণনা করে, সমস্ত একক অনুরোধে।পুনঃসূচনাযোগ্য আপলোড :
uploadType=resumable
। নির্ভরযোগ্য স্থানান্তরের জন্য, বিশেষত বৃহত্তর ফাইলগুলির সাথে গুরুত্বপূর্ণ। এই পদ্ধতির সাহায্যে আপনি একটি সেশন শুরু করার অনুরোধ ব্যবহার করেন, যা বিকল্পভাবে মেটাডেটা অন্তর্ভুক্ত করতে পারে। বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য এটি ব্যবহার করার জন্য এটি একটি ভাল কৌশল, যেহেতু এটি আপলোডের জন্য একটি অতিরিক্ত এইচটিটিপি অনুরোধের ব্যয়ে ছোট ফাইলগুলির জন্যও কাজ করে।
আপনি যখন মিডিয়া আপলোড করেন, আপনি একটি বিশেষ ইউআরআই ব্যবহার করেন। প্রকৃতপক্ষে, মিডিয়া আপলোডগুলিকে সমর্থন করে এমন পদ্ধতিগুলি দুটি ইউআরআই এন্ডপয়েন্ট রয়েছে:
মিডিয়ার জন্য /আপলোড ইউআরআই । আপলোড শেষ পয়েন্টের ফর্ম্যাটটি হ'ল একটি "/আপলোড" উপসর্গ সহ স্ট্যান্ডার্ড রিসোর্স ইউআরআই। মিডিয়া ডেটা নিজেই স্থানান্তর করার সময় এই ইউআরআই ব্যবহার করুন।
উদাহরণ:
POST /upload/games/v1configuration/images/resourceId/imageType/imageType
মেটাডেটার জন্য স্ট্যান্ডার্ড রিসোর্স ইউআরআই । যদি সংস্থানটিতে কোনও ডেটা ক্ষেত্র থাকে তবে সেই ক্ষেত্রগুলি আপলোড করা ফাইলটি বর্ণনা করে মেটাডেটা সঞ্চয় করতে ব্যবহৃত হয়। মেটাডেটা মান তৈরি বা আপডেট করার সময় আপনি এই ইউআরআই ব্যবহার করতে পারেন।
উদাহরণ:
POST /games/v1configuration/images/resourceId/imageType/imageType
সাধারণ আপলোড
কোনও ফাইল আপলোড করার জন্য সর্বাধিক সোজা পদ্ধতি হ'ল একটি সাধারণ আপলোড অনুরোধ করা। নিম্নলিখিতগুলির মধ্যে একটি সত্য হলে এই বিকল্পটি একটি ভাল পছন্দ:
সংযোগটি ব্যর্থ হলে ফাইলটি সম্পূর্ণরূপে আবার আপলোড করতে যথেষ্ট ছোট।
পাঠানোর মতো কোনও মেটাডেটা নেই। আপনি যদি পৃথক অনুরোধে এই সংস্থানটির জন্য মেটাডেটা প্রেরণের পরিকল্পনা করেন বা কোনও মেটাডেটা সমর্থিত বা উপলভ্য না হলে এটি সত্য হতে পারে। সাধারণ আপলোড ব্যবহার করতে, একটি পোস্ট তৈরি করুন বা পদ্ধতির /আপলোড ইউআরআই -তে অনুরোধ রাখুন এবং ক্যোয়ারী প্যারামিটার আপলোড টাইপ = মিডিয়া যুক্ত করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=media
একটি সাধারণ আপলোড অনুরোধ করার সময় এইচটিটিপি শিরোনামগুলি ব্যবহার করার জন্য অন্তর্ভুক্ত রয়েছে:
Content-Type
। এপিআই রেফারেন্স প্রকাশে নির্দিষ্ট করা পদ্ধতির স্বীকৃত আপলোড মিডিয়া ডেটা প্রকারগুলির একটিতে সেট করুন।Content-Length
। আপনি আপলোড করছেন এমন বাইটের সংখ্যায় সেট করুন। আপনি যদি চঙ্কযুক্ত ট্রান্সফার এনকোডিং ব্যবহার করছেন তবে প্রয়োজনীয় নয়।
উদাহরণ: সাধারণ আপলোড
নিম্নলিখিত উদাহরণটি প্লে গেমস সার্ভিসেস পাবলিশিং এপিআইয়ের জন্য একটি সাধারণ আপলোড অনুরোধের ব্যবহার দেখায়।
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: image/png
Content-Length: number_of_bytes_in_file
Authorization: Bearer your_auth_token
PNG data
যদি অনুরোধটি সফল হয় তবে সার্ভার কোনও মেটাডেটা সহ এইচটিটিপি 200 OK
স্ট্যাটাস কোডটি ফেরত দেয়। যেমন:
HTTP/1.1 200
Content-Type: application/json
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
মাল্টিপার্ট আপলোড
আপনি যদি আপলোড করার জন্য ডেটা সহ প্রেরণ করতে চান এমন মেটাডেটা থাকে তবে আপনি একটি একক multipart/related
অনুরোধ করতে পারেন। আপনি যে ডেটা প্রেরণ করছেন তা যদি সংযোগটি ব্যর্থ হয় তবে সম্পূর্ণরূপে আবার আপলোড করার পক্ষে যথেষ্ট ছোট তবে এটি একটি ভাল পছন্দ।
মাল্টিপার্ট আপলোড ব্যবহার করতে, একটি POST
তৈরি করুন বা পদ্ধতির /আপলোড ইউআরআই -তে অনুরোধ PUT
এবং ক্যোয়ারী প্যারামিটার uploadType=multipart
যুক্ত করুন। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=multipart
মাল্টিপার্ট আপলোডের অনুরোধ করার সময় শীর্ষ স্তরের এইচটিটিপি শিরোনামগুলি অন্তর্ভুক্ত রয়েছে:
- Content-Type
। মাল্টিপার্ট/সম্পর্কিত সেট করুন এবং অনুরোধের অংশগুলি সনাক্ত করতে আপনি যে সীমানা স্ট্রিং ব্যবহার করছেন তা অন্তর্ভুক্ত করুন।
- Content-Length
। অনুরোধ বডিটিতে মোট বাইটের সংখ্যা সেট করুন। অনুরোধের মিডিয়া অংশটি অবশ্যই এই পদ্ধতির জন্য নির্দিষ্ট করা সর্বাধিক ফাইল আকারের চেয়ে কম হতে হবে।
অনুরোধের বডিটি মাল্টিপার্ট/সম্পর্কিত সামগ্রী টাইপ আরএফসি 2387 হিসাবে ফর্ম্যাট করা হয় এবং এতে ঠিক দুটি অংশ রয়েছে। অংশগুলি একটি সীমানা স্ট্রিং দ্বারা চিহ্নিত করা হয় এবং চূড়ান্ত সীমানা স্ট্রিংটি দুটি হাইফেন অনুসরণ করে।
মাল্টিপার্ট অনুরোধের প্রতিটি অংশের জন্য অতিরিক্ত সামগ্রী-প্রকারের শিরোনাম প্রয়োজন:
মেটাডেটা পার্ট : অবশ্যই প্রথমে আসতে হবে, এবং সামগ্রী-প্রকারের অবশ্যই স্বীকৃত মেটাডেটা ফর্ম্যাটগুলির একটির সাথে মেলে।
মিডিয়া পার্ট : অবশ্যই দ্বিতীয় হতে হবে এবং সামগ্রী-প্রকারের অবশ্যই একটি পদ্ধতির স্বীকৃত মিডিয়া মাইম প্রকারের সাথে মেলে।
আপলোড করা ফাইলগুলির জন্য গৃহীত মিডিয়া মাইম প্রকার এবং আকারের সীমাগুলির প্রতিটি পদ্ধতির তালিকার জন্য এপিআই রেফারেন্স প্রকাশনা দেখুন।
উদাহরণ: মাল্টিপার্ট আপলোড
নীচের উদাহরণটি প্লে গেমস সার্ভিসেস পাবলিশিং এপিআইয়ের জন্য একটি মাল্টিপার্ট আপলোড অনুরোধ দেখায়।
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=multipart HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer your_auth_token
Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length: number_of_bytes_in_entire_request_body
--foo_bar_baz
Content-Type: application/json; charset=UTF-8
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
--foo_bar_baz
Content-Type: image/png
PNG data
--foo_bar_baz--
যদি অনুরোধটি সফল হয় তবে সার্ভার কোনও মেটাডেটা সহ এইচটিটিপি 200 OK
স্ট্যাটাস কোডটি ফেরত দেয়:
HTTP/1.1 200
Content-Type: application/json
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
পুনরায় শুরুযোগ্য আপলোড
আরও নির্ভরযোগ্যভাবে ডেটা ফাইলগুলি আপলোড করতে, আপনি পুনরায় সাজানো আপলোড প্রোটোকলটি ব্যবহার করতে পারেন। এই প্রোটোকলটি আপনাকে যোগাযোগের ব্যর্থতা ডেটার প্রবাহকে বাধা দেওয়ার পরে একটি আপলোড অপারেশন পুনরায় শুরু করতে দেয়। এটি বিশেষত কার্যকর যদি আপনি বড় ফাইলগুলি স্থানান্তর করছেন এবং কোনও নেটওয়ার্ক বাধা বা অন্য কোনও সংক্রমণ ব্যর্থতার সম্ভাবনা বেশি থাকে, উদাহরণস্বরূপ, কোনও মোবাইল ক্লায়েন্ট অ্যাপ্লিকেশন থেকে আপলোড করার সময়। এটি নেটওয়ার্ক ব্যর্থতার ইভেন্টে আপনার ব্যান্ডউইথ ব্যবহার হ্রাস করতে পারে কারণ আপনাকে শুরু থেকেই বড় ফাইল আপলোডগুলি পুনরায় চালু করতে হবে না।
পুনঃসূচনাযোগ্য আপলোড ব্যবহারের পদক্ষেপগুলির মধ্যে রয়েছে:
একটি পুনঃসূচনা সেশন শুরু করুন। আপলোড ইউআরআই -তে একটি প্রাথমিক অনুরোধ করুন যাতে মেটাডেটা অন্তর্ভুক্ত থাকে, যদি থাকে।
পুনঃসূচনা সেশন ইউআরআই সংরক্ষণ করুন। প্রাথমিক অনুরোধের প্রতিক্রিয়াতে ইউআরআই ফিরে আসা অধিবেশনটি সংরক্ষণ করুন; আপনি এই সেশনে বাকি অনুরোধগুলির জন্য এটি ব্যবহার করবেন। ফাইলটি আপলোড করুন।
মিডিয়া ফাইলটি পুনঃসূচনা সেশন ইউআরআইতে প্রেরণ করুন।
তদতিরিক্ত, অ্যাপ্লিকেশনগুলি যা পুনরায় সারমেয়েবল আপলোড ব্যবহার করে তাদের একটি বাধা আপলোড পুনরায় শুরু করার জন্য কোড থাকা দরকার। যদি কোনও আপলোড বাধাগ্রস্ত হয় তবে কতটা ডেটা সফলভাবে প্রাপ্ত হয়েছিল তা সন্ধান করুন এবং তারপরে সেই বিন্দু থেকে শুরু করে আপলোডটি পুনরায় শুরু করুন।
একটি পুনঃসূচনা সেশন শুরু করুন
একটি পুনঃসূচনাযোগ্য আপলোড শুরু করার জন্য, একটি POST
তৈরি করুন বা পদ্ধতির কাছে অনুরোধ PUT
/ইউআরআই আপলোড করুন এবং ক্যোয়ারী প্যারামিটার uploadType=resumable
। যেমন:
POST https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable
এই সূচনা অনুরোধের জন্য, দেহটি হয় খালি বা এটিতে কেবল মেটাডেটা থাকে; আপনি পরবর্তী অনুরোধগুলিতে আপনি যে ফাইলটি আপলোড করতে চান তার প্রকৃত বিষয়বস্তু আপনি স্থানান্তর করবেন।
প্রাথমিক অনুরোধের সাথে নিম্নলিখিত এইচটিটিপি শিরোনামগুলি ব্যবহার করুন:
X-Upload-Content-Type
। পরবর্তী অনুরোধগুলিতে স্থানান্তরিত করতে আপলোড ডেটার মিডিয়া মাইম প্রকারে সেট করুন।X-Upload-Content-Length
। পরবর্তী অনুরোধগুলিতে স্থানান্তর করতে আপলোড ডেটার বাইটের সংখ্যায় সেট করুন। যদি এই অনুরোধের সময় দৈর্ঘ্য অজানা থাকে তবে আপনি এই শিরোনামটি বাদ দিতে পারেন।যদি মেটাডেটা সরবরাহ করে:
Content-Type
। মেটাডেটার ডেটা টাইপ অনুযায়ী সেট করুন।Content-Length
। এই প্রাথমিক অনুরোধের দেহে প্রদত্ত বাইটের সংখ্যায় সেট করুন। আপনি যদি চঙ্কযুক্ত ট্রান্সফার এনকোডিং ব্যবহার করছেন তবে প্রয়োজনীয় নয়।
আপলোড করা ফাইলগুলির জন্য গৃহীত মিডিয়া মাইম প্রকার এবং আকারের সীমাগুলির প্রতিটি পদ্ধতির তালিকার জন্য এপিআই রেফারেন্স প্রকাশনা দেখুন।
উদাহরণ: পুনঃসূচনা সেশন দীক্ষা অনুরোধ
নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে প্লে গেমস সার্ভিসেস পাবলিশিং এপিআইয়ের জন্য একটি পুনঃসূচনাযোগ্য অধিবেশন শুরু করবেন।
POST /upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer your_auth_token
Content-Length: 38
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Type: image/png
X-Upload-Content-Length: 2000000
{
"kind": "gamesConfiguration#imageConfiguration",
"url": string,
"resourceId": string,
"imageType": string
}
পরবর্তী বিভাগটি কীভাবে প্রতিক্রিয়া পরিচালনা করবেন তা বর্ণনা করে।
পুনঃসূচনা সেশন ইউআরআই সংরক্ষণ করুন
যদি সেশন দীক্ষার অনুরোধটি সফল হয় তবে এপিআই সার্ভার 200 OK
এইচটিটিপি স্থিতি কোড দিয়ে সাড়া দেয়। তদতিরিক্ত, এটি একটি Location
শিরোনাম সরবরাহ করে যা আপনার পুনঃসূচনা সেশন ইউআরআই নির্দিষ্ট করে। নীচের উদাহরণে দেখানো Location
শিরোনামটিতে একটি upload_id
ক্যোয়ারী প্যারামিটার অংশ অন্তর্ভুক্ত রয়েছে যা এই সেশনের জন্য ব্যবহার করতে অনন্য আপলোড আইডি দেয়।
উদাহরণ: পুনঃসূচনা সেশন দীক্ষা প্রতিক্রিয়া
এখানে ধাপ 1 এ অনুরোধের প্রতিক্রিয়া রয়েছে:
HTTP/1.1 200 OK
Location: https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable&upload_id=xa298sd_sdlkj2
Content-Length: 0
উপরের উদাহরণ প্রতিক্রিয়াতে দেখানো হিসাবে Location
শিরোনামের মানটি হ'ল সেশন ইউআরআই আপনি প্রকৃত ফাইল আপলোড করার জন্য বা আপলোডের স্থিতি জিজ্ঞাসা করার জন্য এইচটিটিপি এন্ডপয়েন্ট হিসাবে ব্যবহার করবেন।
সেশন ইউআরআই অনুলিপি করুন এবং সংরক্ষণ করুন যাতে আপনি এটি পরবর্তী অনুরোধগুলির জন্য ব্যবহার করতে পারেন।
ফাইলটি আপলোড করুন
ফাইলটি আপলোড করতে, আপনি পূর্ববর্তী পদক্ষেপে প্রাপ্ত আপলোড ইউআরআই -তে একটি PUT
অনুরোধ প্রেরণ করুন। আপলোড অনুরোধের ফর্ম্যাটটি হ'ল:
PUT session_uri
পুনরায় ব্যবহারযোগ্য ফাইল আপলোড অনুরোধগুলি করার সময় এইচটিটিপি শিরোনামগুলি ব্যবহার করার জন্য Content-Length
অন্তর্ভুক্ত। এই অনুরোধে আপনি আপলোড করছেন এমন বাইটের সংখ্যায় এটি সেট করুন, যা সাধারণত আপলোড ফাইলের আকার।
উদাহরণ: পুনঃসংশ্লিষ্ট ফাইল আপলোড অনুরোধ
বর্তমান উদাহরণের জন্য পুরো 2,000,000 বাইট পিএনজি ফাইলটি আপলোড করার জন্য এখানে একটি পুনঃসূচনাযোগ্য অনুরোধ।
PUT https://www.googleapis.com/upload/games/v1configuration/images/resourceId/imageType/imageType?uploadType=resumable&upload_id=xa298sd_sdlkj2 HTTP/1.1
Content-Length: 2000000
Content-Type: image/png
bytes 0-1999999
যদি অনুরোধটি সফল হয়, সার্ভার এই সংস্থানটির সাথে সম্পর্কিত যে কোনও মেটাডেটা সহ একটি HTTP 201 Created
প্রতিক্রিয়া জানায়। যদি পুনর্নবীকরণযোগ্য অধিবেশনটির প্রাথমিক অনুরোধটি একটি বিদ্যমান সংস্থান আপডেট করার জন্য একটি PUT
হয়ে যায়, তবে এই সংস্থানটির সাথে সম্পর্কিত যে কোনও মেটাডেটা সহ সাফল্যের প্রতিক্রিয়া 200 OK
।
যদি আপলোডের অনুরোধটি বাধাগ্রস্ত হয় বা আপনি যদি কোনও HTTP 503 Service Unavailable
বা সার্ভার থেকে অন্য 5xx
প্রতিক্রিয়া পান তবে একটি বাধা আপলোড পুনরায় শুরুতে বর্ণিত পদ্ধতিটি অনুসরণ করুন।
অংশগুলিতে ফাইল আপলোড করুন
পুনঃসূচনাযোগ্য আপলোডগুলির সাথে, আপনি একটি ফাইলকে খণ্ডগুলিতে ভাঙতে পারেন এবং প্রতিটি অংশকে ক্রমানুসারে আপলোড করার জন্য একাধিক অনুরোধ প্রেরণ করতে পারেন। অতিরিক্ত অনুরোধগুলির সাথে যুক্ত পারফরম্যান্স ব্যয় রয়েছে বলে এটি পছন্দসই পদ্ধতির নয় এবং এটি সাধারণত প্রয়োজন হয় না। তবে, কোনও একক অনুরোধে স্থানান্তরিত ডেটা পরিমাণ হ্রাস করতে আপনার চুনকিং ব্যবহার করতে হবে। গুগল অ্যাপ ইঞ্জিনের অনুরোধগুলির নির্দিষ্ট শ্রেণীর ক্ষেত্রে যেমন সত্য হয় তেমনি পৃথক অনুরোধগুলির জন্য নির্দিষ্ট সময়সীমা থাকলে এটি সহায়ক। এটি আপনাকে লিগ্যাসি ব্রাউজারগুলির জন্য আপলোড অগ্রগতি সূচকগুলি সরবরাহ করার মতো জিনিসগুলি করতে দেয় যা ডিফল্টরূপে অগ্রগতি সমর্থন আপলোড করে না।
আপনি যদি খণ্ডগুলিতে ডেটা আপলোড করছেন তবে সম্পূর্ণ ফাইল আপলোডের জন্য প্রয়োজনীয় সামগ্রী-দৈর্ঘ্যের শিরোনাম সহ সামগ্রী-পরিসীমা শিরোনামও প্রয়োজন:
Content-Length
। শেষ অনুরোধের ক্ষেত্রে যেমন হতে পারে তেমন অংশের আকার বা সম্ভবত কম সেট করুন।Content-Range
। আপনি যে ফাইলটি আপলোড করছেন তা কোন বাইটগুলি দেখানোর জন্য সেট করুন। উদাহরণস্বরূপ,Content-Range: bytes 0-524287/2000000
দেখায় যে আপনি 2,000,000 বাইট ফাইলে প্রথম 524,288 বাইট (256 x 1024 x 2) সরবরাহ করছেন।
একটি বাধা আপলোড পুনরায় শুরু করুন
যদি কোনও প্রতিক্রিয়া পাওয়ার আগে যদি কোনও আপলোডের অনুরোধটি সমাপ্ত হয় বা আপনি যদি সার্ভার থেকে কোনও HTTP 503 Service Unavailable
প্রতিক্রিয়া পান তবে আপনাকে বাধা আপলোডটি আবার শুরু করতে হবে। একটি বাধা আপলোড পুনরায় শুরু করতে, নিম্নলিখিতগুলি করুন:
অনুরোধ স্থিতি । আপলোড ইউআরআই -তে একটি খালি
PUT
অনুরোধ জারি করে আপলোডের বর্তমান স্থিতি জিজ্ঞাসা করুন। এই অনুরোধের জন্য, এইচটিটিপি হেডারগুলিতে একটিContent-Range
শিরোনাম অন্তর্ভুক্ত করা উচিত যা ইঙ্গিত করে যে ফাইলের বর্তমান অবস্থানটি অজানা। উদাহরণস্বরূপ, যদি আপনার মোট ফাইলের দৈর্ঘ্য 2,000,000 হয় তবেContent-Range
*/2000000
এ সেট করুন। আপনি যদি ফাইলটির পুরো আকারটি না জানেন তবে সামগ্রী-পরিসীমাটি*/*
এ সেট করুন।আপলোড করা বাইটের সংখ্যা পান । স্থিতি ক্যোয়ারী থেকে প্রতিক্রিয়া প্রক্রিয়া। সার্ভারটি এখন পর্যন্ত কোন বাইটগুলি পেয়েছে তা নির্দিষ্ট করার জন্য তার প্রতিক্রিয়াতে
Range
শিরোনাম ব্যবহার করে। উদাহরণস্বরূপ,0-299999
এর একটিRange
শিরোনাম ইঙ্গিত দেয় যে ফাইলটির প্রথম 300,000 বাইট প্রাপ্ত হয়েছে।অবশিষ্ট ডেটা আপলোড করুন । শেষ অবধি, এখন আপনি কোথায় অনুরোধটি আবার শুরু করবেন তা জানেন, অবশিষ্ট ডেটা বা বর্তমান অংশটি প্রেরণ করুন। নোট করুন যে আপনাকে বাকী ডেটা উভয় ক্ষেত্রেই পৃথক অংশ হিসাবে বিবেচনা করতে হবে, সুতরাং আপনি আপলোডটি পুনরায় চালু করার সময় আপনাকে
Content-Range
শিরোনাম প্রেরণ করতে হবে।
উদাহরণ: একটি বাধা আপলোড পুনরায় শুরু করুন
আপলোড স্থিতি অনুরোধ। নিম্নলিখিত অনুরোধটি কন্টেন্ট-রেঞ্জের শিরোনামটি ব্যবহার করে এটি নির্দেশ করতে যে 2,000,000 বাইট ফাইলে বর্তমান অবস্থানটি অজানা।
PUT {session_uri} HTTP/1.1 Content-Length: 0 Content-Range: bytes */2000000
প্রতিক্রিয়া থেকে এখনও পর্যন্ত আপলোড করা বাইটের সংখ্যা বের করুন। সার্ভারের প্রতিক্রিয়াটি এখনও পর্যন্ত ফাইলের প্রথম 43 বাইট পেয়েছে তা নির্দেশ করতে
Range
শিরোনাম ব্যবহার করে। কোথায় পুনরায় চালু করা আপলোড শুরু করবেন তা নির্ধারণ করতে রেঞ্জের শিরোনামের উপরের মানটি ব্যবহার করুন।HTTP/1.1 308 Resume Incomplete Content-Length: 0 Range: 0-42
যেখানে এটি ছেড়ে গেছে সেই বিন্দু থেকে আপলোডটি আবার শুরু করুন। নিম্নলিখিত অনুরোধটি বাইট 43 থেকে শুরু করে ফাইলের অবশিষ্ট বাইটগুলি প্রেরণ করে আপলোডটি পুনরায় শুরু করে।
PUT {session_uri} HTTP/1.1 Content-Length: 1999957 Content-Range: bytes 43-1999999/2000000 bytes 43-1999999
ত্রুটি হ্যান্ডলিং
মিডিয়া আপলোড করার সময়, ত্রুটি পরিচালনা সম্পর্কিত কিছু সেরা অনুশীলন সম্পর্কে সচেতন হওয়া সহায়ক।
সংযোগ বাধা বা কোনও 5xx ত্রুটির কারণে ব্যর্থ হওয়া আপলোডগুলি পুনরায় শুরু করুন বা পুনরায় চেষ্টা করুন: সহ:
-
500 Internal Server Error
-
502 Bad Gateway
-
503 Service Unavailable
-
504 Gateway Timeout
-
কোনও
5xx
সার্ভার ত্রুটি যদি পুনরায় চালু বা আপলোডের অনুরোধগুলি পুনরায় চেষ্টা করার সময় ফিরে আসে তবে একটি তাত্পর্যপূর্ণ ব্যাকঅফ কৌশল ব্যবহার করুন। কোনও সার্ভার অতিরিক্ত বোঝা হয়ে গেলে এই ত্রুটিগুলি ঘটতে পারে। তাত্পর্যপূর্ণ ব্যাকঅফ উচ্চ পরিমাণের অনুরোধ বা ভারী নেটওয়ার্ক ট্র্যাফিকের সময়কালে এই ধরণের সমস্যাগুলি দূর করতে সহায়তা করতে পারে।অন্যান্য ধরণের অনুরোধগুলি তাত্পর্যপূর্ণ ব্যাকঅফ দ্বারা পরিচালনা করা উচিত নয় তবে আপনি এখনও সেগুলির বেশ কয়েকটি পুনরায় চেষ্টা করতে পারেন। এই অনুরোধগুলি পুনরায় চেষ্টা করার সময়, আপনি তাদের পুনরায় চেষ্টা করার সংখ্যা সীমাবদ্ধ করুন। উদাহরণস্বরূপ আপনার কোডটি কোনও ত্রুটির প্রতিবেদন করার আগে দশটি পুনরুদ্ধার বা তার চেয়ে কম সীমাবদ্ধ করতে পারে।
হ্যান্ডেল
404 Not Found
এবং410 Gone
ত্রুটিগুলি শুরু থেকে পুরো আপলোড শুরু করে পুনরায় অঙ্কিত আপলোডগুলি করার সময় ত্রুটিগুলি।
সূচকীয় ব্যাকঅফ
এক্সফোনেনশিয়াল ব্যাকঅফ হ'ল নেটওয়ার্ক অ্যাপ্লিকেশনগুলির জন্য কৌশল হ্যান্ডলিং কৌশল যেখানে ক্লায়েন্ট পর্যায়ক্রমে ক্রমবর্ধমান সময়ের তুলনায় একটি ব্যর্থ অনুরোধটি পুনরায় চেষ্টা করে। যদি একটি উচ্চ পরিমাণের অনুরোধ বা ভারী নেটওয়ার্ক ট্র্যাফিকের ফলে সার্ভারটি ত্রুটিগুলি ফিরিয়ে দেয় তবে এক্সফোনেনশিয়াল ব্যাকঅফ এই ত্রুটিগুলি পরিচালনা করার জন্য একটি ভাল কৌশল হতে পারে। বিপরীতে, নেটওয়ার্ক ভলিউম বা প্রতিক্রিয়ার সময়গুলির সাথে সম্পর্কিত না হওয়া ত্রুটিগুলি যেমন অবৈধ অনুমোদনের শংসাপত্রগুলি বা ফাইলের ত্রুটি পাওয়া যায় না তার সাথে সম্পর্কিত ত্রুটিগুলি মোকাবেলার জন্য এটি কোনও প্রাসঙ্গিক কৌশল নয়।
সঠিকভাবে ব্যবহৃত, তাত্পর্যপূর্ণ ব্যাকঅফ ব্যান্ডউইথ ব্যবহারের দক্ষতা বৃদ্ধি করে, একটি সফল প্রতিক্রিয়া পাওয়ার জন্য প্রয়োজনীয় অনুরোধের সংখ্যা হ্রাস করে এবং একযোগে পরিবেশে অনুরোধগুলির থ্রুপুটকে সর্বাধিক করে তোলে।
সাধারণ তাত্পর্যপূর্ণ ব্যাক অফ বাস্তবায়নের প্রবাহটি নিম্নরূপ:
- এপিআইয়ের কাছে একটি অনুরোধ করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 1 সেকেন্ড + এলোমেলো_নম্বার_মিলিসেকেন্ডস অপেক্ষা করুন এবং অনুরোধটি পুনরায় চেষ্টা করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 2 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- একটি
HTTP 503
প্রতিক্রিয়া পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 4 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- একটি
HTTP 503 response
পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 8 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- একটি
HTTP 503 response
পান, যা আপনাকে অনুরোধটি পুনরায় চেষ্টা করা উচিত তা নির্দেশ করে। - 16 সেকেন্ড অপেক্ষা করুন + এলোমেলো_নম্বার_মিলিসেকেন্ডস এবং অনুরোধটি আবার চেষ্টা করুন।
- থামো। একটি ত্রুটি রিপোর্ট বা লগ করুন।
উপরের তালিকায়, এলোমেলো_নম্বার_মিলিসেকেন্ডস 1000 এর চেয়ে কম বা সমান মিলিসেকেন্ডের একটি এলোমেলো সংখ্যক। এটি প্রয়োজনীয়, যেহেতু একটি ছোট এলোমেলো বিলম্ব প্রবর্তন করা লোডটিকে আরও সমানভাবে বিতরণ করতে সহায়তা করে এবং সার্ভারকে স্ট্যাম্পড করার সম্ভাবনা এড়াতে সহায়তা করে। এলোমেলো_নম্বার_মিলিসেকেন্ডগুলির মান প্রতিটি অপেক্ষার পরে পুনরায় সংজ্ঞায়িত করতে হবে।
অ্যালগরিদমটি যখন এন 5 হয় তখন সমাপ্ত হতে চলেছে। এই সিলিং ক্লায়েন্টদের অসীমভাবে পুনরায় চেষ্টা করতে বাধা দেয় এবং একটি অনুরোধ "একটি অপ্রয়োজনীয় ত্রুটি" হিসাবে বিবেচিত হওয়ার আগে প্রায় 32 সেকেন্ডের মোট বিলম্বের ফলস্বরূপ। একটি বৃহত্তর সর্বাধিক সংখ্যক পুনরুদ্ধার ঠিক আছে, বিশেষত যদি দীর্ঘ আপলোড অগ্রগতি হয়; যুক্তিসঙ্গত কোনও কিছুতে পুনরায় চেষ্টা করতে নিশ্চিত হন, এক মিনিটেরও কম সময় বলুন।