আমি ইদানীং এটি এবং অন্যান্য রেস্ট্রিক পেজ সম্পর্কিত সম্পর্কিত প্রশ্নগুলির জন্য কিছু বিস্তৃত গবেষণা করছি এবং আমার কিছু অনুসন্ধান এখানে যুক্ত করার পক্ষে এটি গঠনমূলক বলে মনে করেছি। পেজিংয়ের পাশাপাশি চিন্তার সাথে সম্পর্কিত হিসাবে বিবেচনাগুলি অন্তর্ভুক্ত করার জন্য আমি প্রশ্নটি কিছুটা প্রসারিত করছি।
শিরোলেখ
পেজিং মেটাডেটা প্রতিক্রিয়া শিরোনাম আকারে অন্তর্ভুক্ত করা হয়। এই পদ্ধতির বড় সুবিধা হ'ল প্রতিক্রিয়া পেডলোড নিজেই কেবল আসল ডেটা রিকোয়েটারের জন্য জিজ্ঞাসা করেছিল। পৃষ্ঠাগুলির তথ্যে আগ্রহী নয় এমন ক্লায়েন্টদের জন্য প্রতিক্রিয়া প্রক্রিয়াজাতকরণ সহজ করা।
মোট গণনা সহ পেজিং সম্পর্কিত তথ্য ফেরত দিতে বুনোয় ব্যবহৃত (স্ট্যান্ডার্ড এবং কাস্টম) শিরোনাম রয়েছে।
এক্স-মোট গোনা
X-Total-Count: 234
এটি বন্যের মধ্যে পাওয়া কিছু এপিআইতে ব্যবহৃত হয় । এছাড়াও রয়েছে NPM প্যাকেজ যেমন লুপব্যাক এই হেডারের জন্য সমর্থন যোগ করার জন্য। কিছু নিবন্ধগুলি এই শিরোনামটিও সেট করার পরামর্শ দেয়।
এটি প্রায়শই Link
শিরোলেখের সাথে একত্রে ব্যবহৃত হয় , যা পেজিংয়ের জন্য বেশ ভাল সমাধান, তবে মোট গণনা সম্পর্কিত তথ্য অভাবী।
লিংক
Link: </TheBook/chapter2>;
rel="previous"; title*=UTF-8'de'letztes%20Kapitel,
</TheBook/chapter4>;
rel="next"; title*=UTF-8'de'n%c3%a4chstes%20Kapitel
আমি এই বিষয় উপর অনেক পড়া থেকে বোধ, যে সাধারণ ঐক্যমত্য ব্যবহার করা Link
হেডার ব্যবহার ক্লায়েন্ট লিঙ্ক সংখ্যা লাগিয়ে প্রদান rel=next
, rel=previous
ইত্যাদি এই সঙ্গে সমস্যা এটি কতগুলি মোট রেকর্ডের তথ্য আছে অভাব আছে, যা হয় কেন অনেকগুলি API গুলি এটিকে X-Total-Count
শিরোলেখের সাথে একত্রিত করে ।
বিকল্পভাবে, কিছু এপিআই এবং যেমন জসনএপি মানক, Link
ফর্ম্যাটটি ব্যবহার করে তবে শিরোনামের পরিবর্তে প্রতিক্রিয়ার খামে তথ্য যুক্ত করুন। এটি প্রকৃত ডেটা নিজেই অ্যাক্সেস করার জটিলতা ব্যয় করে (একটি খাম যোগ করে) মেটাডেটা অ্যাক্সেসকে সহজ করে তোলে (এবং মোট গণনা তথ্য যুক্ত করার জন্য একটি জায়গা তৈরি করে)।
বিষয়বস্তু-বিন্যাস
Content-Range: items 0-49/234
রেঞ্জের শিরোনাম নামে একটি ব্লগ নিবন্ধ দ্বারা প্রচারিত , আমি আপনাকে (পৃষ্ঠার জন্য) বেছে নিই! । পৃষ্ঠাগুলি জন্য লেখক Range
এবং Content-Range
শিরোনাম ব্যবহার করার জন্য একটি শক্তিশালী কেস তৈরি করে । আমরা যখন মনোযোগ দিয়ে পড়ুন বোঝায় যা RFC এই হেডার উপর, আমরা যে বাইটের রেঞ্জ পরেও তাদের অর্থ ব্যাপ্ত আসলে বোঝায় যা RFC পূর্বাভাস পাওয়া হয় এবং স্পষ্টভাবে অনুমোদিত হয়। পরিবর্তে এর প্রসঙ্গে ব্যবহার করা হলে , রেঞ্জের শিরোনামটি আমাদের উভয়কে নির্দিষ্ট আইটেমের নির্দিষ্ট পরিসরের অনুরোধ করার জন্য একটি উপায় দেয় এবং প্রতিক্রিয়া আইটেমগুলির সাথে সম্পর্কিত মোট ফলাফলের পরিসীমা নির্দেশ করে। এই শিরোনামটি মোট সংখ্যাটি দেখানোর জন্য দুর্দান্ত উপায় দেয়। এবং এটি সত্যিকারের মান যা বেশিরভাগ ম্যাপিং একের পর এক পেজিংয়ের জন্য। এটি বন্যগুলিতেও ব্যবহৃত হয় । items
bytes
খাম
আমাদের প্রিয় প্রশ্নোত্তর ওয়েবসাইটের একটি সহ অনেকগুলি এপিআই, একটি খাম , ডেটাটির চারপাশে একটি মোড়ক ব্যবহার করে যা ডেটা সম্পর্কে মেটা তথ্য যুক্ত করতে ব্যবহৃত হয়। এছাড়াও, OData এবং JsonApi মান উভয় একটি প্রতিক্রিয়া খাম ব্যবহার করুন।
এর (ইমো) সবচেয়ে বড় ক্ষতিটি হ'ল প্রতিক্রিয়ার ডেটা প্রক্রিয়াকরণ আরও জটিল হয়ে ওঠে কারণ প্রকৃত ডেটা খামের কোথাও খুঁজে পেতে হয়। এছাড়াও সেই খামের জন্য অনেকগুলি আলাদা ফর্ম্যাট রয়েছে এবং আপনাকে সঠিক একটিটি ব্যবহার করতে হবে। এটি বলছে যে ওডাটা এবং জসনএপি থেকে প্রাপ্ত প্রতিক্রিয়ার খামগুলি অদ্ভুতভাবে আলাদা, ওডাটা প্রতিক্রিয়ার একাধিক পয়েন্টে মেটাডেটার সাথে মিশে।
পৃথক পয়েন্ট
আমি মনে করি এটি অন্যান্য উত্তরে যথেষ্ট পরিমাণে কভার করা হয়েছে। আমি এগুলি তদন্ত করে নিই না কারণ আপনার এখন একাধিক ধরণের এন্ডপয়েন্ট রয়েছে বলে এটি বিভ্রান্তিকর মন্তব্যের সাথে আমি একমত। আমি মনে করি যদি প্রতিটি প্রান্ত পয়েন্ট কোনও (সংস্থান) সংস্থান (গুলি) উপস্থাপন করে তবে এটি সর্বোত্তম।
আরও চিন্তা
আমাদের কেবল প্রতিক্রিয়া সম্পর্কিত পেজিং মেটা তথ্য যোগাযোগ করতে হবে না, তবে ক্লায়েন্টকে নির্দিষ্ট পৃষ্ঠাগুলি / রেঞ্জগুলির জন্য অনুরোধ করার অনুমতি দেবে। সুসংগত সমাধানের সাথে শেষ পর্যন্ত এই দিকটিও দেখতে আকর্ষণীয়। এখানেও আমরা শিরোলেখগুলি ব্যবহার করতে পারি ( Range
শিরোনামটি খুব উপযুক্ত বলে মনে হয়), বা কোয়েরি প্যারামিটারের মতো অন্যান্য প্রক্রিয়া। কিছু লোক ফলাফলের পৃষ্ঠাগুলিকে পৃথক সংস্থান হিসাবে চিকিত্সার পক্ষে পরামর্শ দেয়, যা কিছু ব্যবহারের ক্ষেত্রে বোধগম্য হতে পারে (যেমন, /books/231/pages/52
আমি শিরোনামকে সমর্থন করার পাশাপাশি ঘন ঘন ব্যবহৃত অনুরোধ পরামিতি যেমন pagesize
, page[size]
এবং limit
ইত্যাদি নির্বাচন করে শেষ করেছি Range
(এবং অনুরোধ প্যারামিটার হিসাবে যেমন).