আমি জেএসওএন নথি সংগ্রহ করার জন্য সরাসরি আরইএসটি ইন্টারফেসটি প্রকাশ করতে আগ্রহী (মনে করি কাউচডিবি বা পারসিভের )) আমি যে সমস্যাটি নিয়ে যাচ্ছি তা হ'ল GET
সংগ্রহটি বড় হলে সংগ্রহের রুটে কীভাবে পরিচালনা করা যায়।
উদাহরণ হিসাবে ভান করে আমি স্ট্যাকওভারফ্লো এর Questions
টেবিলটি উন্মোচিত করছি যেখানে প্রতিটি সারি একটি নথি হিসাবে প্রকাশ করা হয়েছে ( এমনটি নেই যে টেবিলটি অগত্যা রয়েছে, কেবল 'নথিপত্রের বিশাল আকারের সংগ্রহের একটি দৃ example় উদাহরণ)। সংগ্রহে এ উপলব্ধ করা হবে /db/questions
স্বাভাবিক টি ককটেলের API- এর সাথে GET /db/questions/XXX
, PUT /db/questions/XXX
, POST /db/questions
খেলা হয়। পুরো সংগ্রহটি পাওয়ার স্ট্যান্ডার্ড GET /db/questions
উপায়টি হ'ল তবে যদি সেই নির্বিঘ্নে প্রতিটি সারিটি JSON অবজেক্ট হিসাবে ডাম্প করে দেয় তবে আপনি সার্ভারের অংশে একটি পরিবর্তে আকারের ডাউনলোড এবং প্রচুর কাজ পাবেন।
সমাধানটি অবশ্যই, পেজিং হয়। কাস্টম রেঞ্জ ইউনিট সহ শিরোনামটি ব্যবহারের চতুর আরএফসি 2616- অনুগ্রহপূর্বক এক্সটেনশনের মাধ্যমে ডোজো তার JsonRestStore এ এই সমস্যার সমাধান করেছে । ফলাফলটি এমন একটি যা কেবলমাত্র অনুরোধ করা ব্যাপ্তিটি দেয়। একটি ক্যোয়ারী প্যারামিটারের মাধ্যমে এই পদ্ধতির সুবিধাটি হ'ল ... এটি ক্যোয়ারী স্ট্রিংকে ... কোয়েরিগুলির জন্য ছেড়ে দেয় (যেমন বা সামসুচ, এবং হ্যাঁ এনকোড করা হবে না )।Range
items
206 Partial Content
GET /db/questions/?score>200
%3E
এই পদ্ধতিটি আমার যে আচরণটি চায় তা পুরোপুরি coversেকে দেয়। সমস্যাটি হ'ল আরএফসি 2616 নির্দিষ্ট করে যে 206 প্রতিক্রিয়াতে (জোর দেওয়া খনি):
অনুরোধ রেঞ্জ হেডারের ক্ষেত্র (অন্তর্ভুক্ত থাকতে হবে অধ্যায় 14.35 ) আকাঙ্ক্ষিত পরিসীমা ইঙ্গিত, এবং একটি if-বিন্যাস হেডার ক্ষেত্র (অন্তর্ভুক্ত হতে পারে অধ্যায় 14,27 অনুরোধ শর্তসাপেক্ষ করতে)।
এটি শিরোনামের স্ট্যান্ডার্ড ব্যবহারের প্রসঙ্গে বোঝায় তবে একটি সমস্যা কারণ নির্দোষ ক্লায়েন্ট / এলোমেলো লোকদের অন্বেষণ করার জন্য আমি 206 এর প্রতিক্রিয়াটি ডিফল্ট হতে চাই।
আমি আরএফসির সাথে বিশদভাবে সমাধানের সন্ধান করতে পেরেছি তবে আমার সমাধানগুলি নিয়ে অসন্তুষ্ট হয়েছি এবং সমস্যাটি নিয়ে এসওের আগ্রহী।
আমার ধারণাগুলি ছিল:
- হেডার
200
নিয়ে ফিরুনContent-Range
! - আমি মনে করি না যে এটি ভুল, তবে আমি যদি আরও স্পষ্ট সূচকটি পছন্দ করি যে প্রতিক্রিয়াটি কেবল আংশিক সামগ্রী। - রিটার্ন
400 Range Required
- প্রয়োজনীয় শিরোলেখগুলির জন্য একটি বিশেষ 400 প্রতিক্রিয়া কোড নেই, তাই ডিফল্ট ত্রুটিটি হাতে হাতে ব্যবহার করতে হবে এবং পড়তে হবে। এটি ওয়েব ব্রাউজারের মাধ্যমে (বা অন্য কোনও ক্লায়েন্ট যেমন রেস্টির) মাধ্যমে অনুসন্ধান আরও জটিল করে তুলেছে। - একটি ক্যোয়ারী প্যারামিটারটি ব্যবহার করুন - মানক পদ্ধতির, তবে আমি কোরিয়ার একটি লা পার্সেভেরিকে জিজ্ঞাসা করার অনুমতি দেবো এবং কোয়েরির নাম স্থানটিতে এটি কেটে দেবে hop
- শুধু ফিরে
206
! - আমি মনে করি বেশিরভাগ ক্লায়েন্টরা ফ্রি আউট করবে না, তবে আমি আরএফসিতে কোনও জোরের বিরুদ্ধে যাব না - জল্পনা বাড়ান! ফিরে আসুন
266 Partial Content
- হ'ল 206 এর মতো আচরণ করে তবে একটি অনুরোধের প্রতিক্রিয়া হিসাবে এটিRange
হেডারটি থাকা উচিত নয় contain আমি অনুমান করেছি যে ২66 যথেষ্ট উচ্চ যে আমার সংঘর্ষের সমস্যাগুলির মধ্যে দৌড়াতে হবে না এবং এটি আমার কাছে বোধগম্য হয় তবে এটিকে নিষিদ্ধ হিসাবে বিবেচনা করা হয় কি না সে সম্পর্কে আমি পরিষ্কার নই।
আমি মনে করি এটি মোটামুটি সাধারণ সমস্যা এবং আমি বা অন্য কেউ চক্রটি পুনরায় উদ্ভাবন না করানোর জন্য এটি একটি ধরণের ডি ফ্যাক্টো ফ্যাশনে সম্পন্ন করতে দেখতে চাই।
সংগ্রহটি বড় হলে এইচটিটিপি এর মাধ্যমে একটি সম্পূর্ণ সংগ্রহটি প্রকাশের সর্বোত্তম উপায় কী?
Range = "Range" ":" ranges-specifier
যেখানে সরঞ্জামগুলির মধ্যে.ইটিএফ.আর.জি.এইচটিএমএল / আরএফসি 2616# সেকশন 14.35.1 কেবল "বাইট-রেঞ্জস-স্পেসিফায়ার" হিসাবে বর্ণনা করা হয়েছে যা "বাইটস-ইউনিট" দিয়ে শুরু হওয়া আবশ্যক যা স্ট্রিং "বাইটস হিসাবে সংজ্ঞায়িত হয়েছে" "।
Content-Range
হেডার শরীর প্রযোজ্য (যখন ডাউনলোড করার প্রতিক্রিয়ার জন্য যখন বড় ফাইল ইত্যাদি আপলোড অনুরোধের সাথে ব্যবহার করা যেতে পারে, অথবা)। Range
হেডার একটি নির্দিষ্ট পরিসীমা অনুরোধ করতে ব্যবহার করা হয়। 206
যখন Range
শিরোনামটি অনুরোধের অন্তর্ভুক্ত ছিল তখন একটির সাথে প্রতিক্রিয়া জানানো উচিত । যদি এটি না হয় তবে প্রতিক্রিয়াটিতে এখনও একটি Content-Range
শিরোনাম অন্তর্ভুক্ত থাকতে পারে তবে প্রতিক্রিয়া কোডটি হওয়া উচিত 200
। এই শিরোনামটি আসলে পেজিংয়ের জন্য আদর্শ বলে মনে হচ্ছে।