আমি কীভাবে এইচটিটিপি জিইটি কোয়েরি স্ট্রিংয়ের দৈর্ঘ্যের সীমাবদ্ধতাগুলি মোকাবেলা করতে পারি এবং এখনও বিশ্রাম পেতে চাই?


84

Http://www.boutell.com/newfaq/misc/urlleight.html এ যেমন বলা হয়েছে , এইচটিটিপি কোয়েরি স্ট্রিংয়ের দৈর্ঘ্য সীমিত। এটি ক্লায়েন্ট (ফায়ারফক্স, আইই, ...), সার্ভার (অ্যাপাচি, আইআইএস, ...) বা নেটওয়ার্ক সরঞ্জামগুলি (প্রয়োগমূলক ফায়ারওয়াল, ...) দ্বারা সীমাবদ্ধ হতে পারে।

আজ আমি একটি অনুসন্ধান ফর্ম দিয়ে এই সমস্যার মুখোমুখি। আমরা অনেকগুলি ক্ষেত্র সহ একটি অনুসন্ধান ফর্ম তৈরি করেছি এবং এই ফর্মটি জিইটি অনুরোধ হিসাবে সার্ভারে প্রেরণ করা হয়েছে, ফলে ফলাফলের পৃষ্ঠাটি বুকমার্ক করতে পারি।

আমাদের এতগুলি ক্ষেত্র রয়েছে যে আমাদের কোয়েরি স্ট্রিংটি 1100 বাইট দীর্ঘ, এবং আমাদের একটি ফায়ারওয়াল রয়েছে যা এইচটিটিপি জিইটি অনুরোধকে 1024 বাইটেরও বেশি ফেলে দেয়। আমাদের সিস্টেম প্রশাসক আমাদের পরিবর্তে POST ব্যবহার করার পরামর্শ দেয় যাতে কোনও সীমাবদ্ধতা থাকবে না।

অবশ্যই, পোষ্ট কাজ করবে তবে আমি সত্যিই জিইটি হিসাবে অনুসন্ধান অনুভব করব এবং পোষ্ট নয়। সুতরাং আমি মনে করি যে ক্যোয়ারী স্ট্রিং খুব বেশি দীর্ঘ নয় তা নিশ্চিত করার জন্য আমি আমাদের ফিল্ডের নামগুলি পর্যালোচনা করব এবং যদি আমি না পারি তবে আমি বাস্তববাদী হয়ে পোস্টটি ব্যবহার করব।

তবে রেস্টস্টুল সার্ভিসের নকশাতে কি কোনও ত্রুটি রয়েছে? জিইটি অনুরোধে যদি আমাদের সীমিত দৈর্ঘ্য থাকে তবে আমি কীভাবে একটি বৃহত্তর অবজেক্টগুলিকে একটি রেস্টস্টুল ওয়েব সার্ভিসে প্রেরণ করতে পারি? উদাহরণস্বরূপ, যদি আমি একটি প্রোগ্রাম যা একটি ফাইল উপর ভিত্তি করে হিসাব করে তোলে আছে, এবং আমি এই মত একটি RESTful webservice প্রদান করতে চান: http://compute.com?content=<base64 file>। এটি কাজ করবে না কারণ ক্যোরি স্ট্রিংয়ের সীমাহীন দৈর্ঘ্য নেই।

আমি একটু বিস্মিত ...


4
আপনার প্রসঙ্গে শর্তাদির অর্থ কী? বা প্যারাফ্রেসিং: জিইটি কেন বিশ্রামে এবং পোষ্ট হয় না? কারণ জিইটি সাধারণ স্ট্রিং সংমিশ্রণ ব্যবহার করে নির্মিত যেতে পারে? অনুসন্ধানের দৈর্ঘ্যের সীমাবদ্ধতা হ'ল অ্যাপগুলিতে গতিশীল মেমরির বরাদ্দ এড়ানো যা দ্রুত কাজ করার উদ্দেশ্যে।
খচিক

4
যখন আমি কোনও অনুসন্ধান করতে চাই, তখন আমি কোনও কিছু তৈরি করতে, মুছতে বা আপডেট করতে চাই না, আমি কেবল তথ্য পুনরুদ্ধার করতে চাই, তাই আমার পোষ্ট, ডিলেট বা পুট ব্যবহার করা উচিত নয় এবং আমার জিইটি ব্যবহার করা উচিত। এভাবেই আমি
আরআরএসটি

জিইটি অনুসন্ধানের জন্য উপযুক্ত নয়, কারণ একটি অনুসন্ধানের ফলাফল সময়ের সাথে সাথে পরিবর্তিত হতে পারে। ওয়েব পরিকাঠামো প্রায়শই জিইটি অনুরোধগুলির ক্যাচিংয়ের অনুমতি দেয়। আপনি যদি জিইটি ব্যবহার করেন তবে অনুসন্ধানগুলির জন্য পুরানো বাসি ফলাফল পাওয়ার ঝুঁকি রয়েছে। নীচে প্রস্তাবিত হিসাবে POST উপায় হয়।
অচল

15
সবকিছু ওভারটাইম (পরিবর্তনগুলি en.wikipedia.org/wiki/Impermanence ), যেমন মহাবিশ্বের প্রকৃতি ... কিন্তু তাহলে GET কারণ "কর্ম অনুসন্ধান" অনুসন্ধানের জন্য ব্যবহার করা উচিত ফলাফল পরিবর্তন করে না
Luxspes

উত্তর:


51

আপনার বর্ণনার ভিত্তিতে, IMHO আপনার একটি পোষ্ট ব্যবহার করা উচিত। পোস্ট সার্ভারে ডেটা রাখার জন্য এবং কিছু ক্ষেত্রে একটি উত্তর পাওয়া যায়। আপনার ক্ষেত্রে, আপনি একটি অনুসন্ধান করেন (সার্ভারে একটি কোয়েরি প্রেরণ করুন) এবং সেই অনুসন্ধানের ফলাফল পান (ক্যোয়ারির ফলাফল পুনরুদ্ধার করুন)।

জিইটির সংজ্ঞা বলে যে এটি ইতিমধ্যে বিদ্যমান সংস্থান পুনরুদ্ধার করতে ব্যবহার করা উচিত। সংজ্ঞা অনুসারে, POST হ'ল একটি নতুন সংস্থান তৈরি করা। এটি হ'ল আপনি যা করছেন: সার্ভারে একটি উত্স তৈরি করা এবং এটি পুনরুদ্ধার করা! এমনকি আপনি অনুসন্ধানের ফলাফল সংরক্ষণ না করেও আপনি সার্ভারে একটি বস্তু তৈরি করে পুনরুদ্ধার করেছেন। যেমনটি পিটারএমএমএম প্রচলিতভাবে বলেছে, আপনি এটি কোনও পোস্টের মাধ্যমে করতে পারেন (ক্যোয়ারির ফলাফল তৈরি করুন এবং সংরক্ষণ করুন) এবং তারপরে কোয়েরিটি পুনরুদ্ধার করতে একটি জিইটি ব্যবহার করুন, তবে এটি কেবলমাত্র একটি পোস্ট করে এবং ফলাফলটি পুনরুদ্ধার করা আরও নির্গত।

আশাকরি এটা সাহায্য করবে! :)


4
আপনি ঠিক বলেছেন, আমি এটি পোস্ট হিসাবে দেখতে পারি কারণ অনুসন্ধানটি একটি অস্থির নতুন গণিত সংস্থান। তবে পোষ্ট এবং জিইটি-র মধ্যে সীমানা দেখতে আমার এখনও সমস্যা আছে। আমি যদি একটি লাইব্রেরিতে সমস্ত বিজ্ঞান-কল্পকাহিনী বই অনুসন্ধান করতে চাই তবে আমি বিদ্যমান সংস্থাগুলির একটি সংগ্রহ পাব, তাই আমি একটি জিইটি ব্যবহার করার জন্য প্রলুব্ধ হলাম, তবে আপনি এটি একটি পোষ্ট হিসাবে দেখার প্রস্তাব দিচ্ছেন কারণ অনুসন্ধানটি নিজেই একটি নতুন উত্স। সুতরাং জিইটি-তে ক্যোরিয় স্ট্রিংটি কেবলমাত্র ডেটা উপস্থাপনা পরিবর্তন করতে ব্যবহার করা উচিত, তবে ডেটা ফিল্টার করার জন্য নয়। আমি কি সঠিক?
cbliard

8
পোষ্টগুলি অনুসন্ধানের জন্য ব্যবহার করা উচিত নয়, জিইটি হ'ল ব্যবহার করা উচিত, আপনি ভাগ করে নিতে পারেন এমন ক্যাশে এবং ফলাফল, ইউআরএল এবং ফলাফলগুলি, এবং আপনি ইন্টারনেটের
বিশিষ্ট

37
এই উত্তরটি আরও শব্দ দিয়ে খেলতে চেষ্টা করার মতো মনে হচ্ছে। এই যুক্তি অনুসারে, আমরা সমস্ত কিছু পোস্ট অনুরোধ হিসাবে তৈরি করতে পারি এবং এখনও বিশ্রামপ্রাপ্ত হতে পারি।
সুপারটন্সকি

9
এই উত্তরটি দেখে মনে হচ্ছে কিছু আইনজীবী আমার সাথে কথা বলেছেন :-) প্রশ্নটি আসলে "আমার একটি জিইটি কেস আছে, ঠিক আছে But তবে আমার ক্যোয়ারী স্ট্রিং অনুমোদিত দৈর্ঘ্য ছাড়িয়ে গেছে। আমি কীভাবে পরিচালনা করব"। এই উত্তরকে উঁচু করে তোলা।
জি স্টোনেভ

4
যদি সেই যুক্তিটি অনুসরণ করে, তবে প্রতিটি অনুরোধ একটি উত্স তৈরি করছে এবং এটি পুনরুদ্ধার করবে।
অ্যালেক্স

66

এইচটিটিপি স্পেসিফিকেশন গণনার জন্য কোনও সংস্থায় ডেটা প্রেরণ করার সময় POST ব্যবহার করার পরামর্শ দেয়

আপনার অনুসন্ধানটি কোনও সংখ্যার মতো দেখাচ্ছে, কোনও সংস্থান হিসাবে নয়। আপনি যদি এখনও আপনার অনুসন্ধানের ফলাফলগুলি একটি সংস্থান হিসাবে পেতে চান তবে আপনি কী করতে পারেন তা সেই নির্দিষ্ট অনুসন্ধানের ফলাফলটি সনাক্ত করার জন্য একটি টোকেন তৈরি করা এবং ব্যবহারকারী এজেন্টকে সেই সংস্থানটিতে পুনঃনির্দেশিত করা।

আপনি কিছু সময় পরে অনুসন্ধান ফলাফল টোকেন মুছতে পারেন।

উদাহরণ

POST /search
query=something&category=c1&category=c2&...

201 Created
Location: /search/01543164876

তারপর

GET /search/01543164876

200 Ok
... your results here...

এইভাবে, ব্রাউজারগুলি এবং প্রক্সিগুলি এখনও অনুসন্ধানের ফলাফলগুলিকে ক্যাশে করতে পারে তবে আপনি POST ব্যবহার করে আপনার ক্যোয়ারী প্যারামিটারগুলি জমা দিচ্ছেন।

সম্পাদনা

স্পষ্টতার জন্য, 01543164876এখানে আপনার সন্ধান প্রতিনিধিত্বকারী সংস্থানটির জন্য একটি অনন্য আইডি উপস্থাপন করে। এই 2 টি অনুরোধের মূলত অর্থ: এই মানদণ্ডগুলির সাহায্যে একটি নতুন অনুসন্ধান অবজেক্ট তৈরি করুন, তারপরে তৈরি অনুসন্ধান সামগ্রীর সাথে সম্পর্কিত ফলাফলগুলি পুনরুদ্ধার করুন।

প্রতিটি নতুন অনুরোধের জন্য এই আইডিটি অনন্য আইডি হতে পারে। এর অর্থ হ'ল আপনার সার্ভারটি "অনুসন্ধান" অবজেক্টগুলি ফাঁস করবে এবং আপনাকে নিয়মিতভাবে ক্যাচিংয়ের কৌশল দ্বারা পরিষ্কার করতে হবে।

অথবা এটি ব্যবহারকারীর জিজ্ঞাসা করা অনুসন্ধানের প্রতিনিধিত্বকারী সমস্ত অনুসন্ধানের মানদণ্ডের একটি হ্যাশ হতে পারে। এটি আপনাকে আইডি পুনরায় ব্যবহার করতে দেয় যেহেতু অনুসন্ধান পুনরায় শুরু করার ফলে একটি বিদ্যমান আইডি ফিরে আসবে যা ইতিমধ্যে ক্যাশে হতে পারে (বা নাও পারে)।


কোয়েরিকে বুকমার্ক করার বিষয়ে এই ওপিটির কীভাবে প্রয়োজনের ঠিকানা?
রবিবার্ব

4
@ রবার্ব এটি প্রদত্ত অনুসন্ধানের জন্য একটি উত্স তৈরি করে পরিষ্কারভাবে এটিকে সম্বোধন করবে।
maulik13

4
এটি ফলাফলগুলি কমিয়ে দেবে। একটি পোস্ট সম্পাদন করুন এবং তারপরে একটি জিইটি সম্পাদন করুন। এটি অনুসন্ধানটি আনতে কমপক্ষে 300 মিলিয়ন যোগ করবে।
jaxxbo

উত্সের লিঙ্কটি মারা গেছে
ইমোব

আমি বিভ্রান্ত, পোষ্ট এবং জিইটি-র মধ্যে সার্ভারটি কী করবে? এটি সার্ভারে অনুসন্ধানের ডেটা ক্যাশে করে এবং কেবল জিইটি অনুরোধটি আসার জন্য অপেক্ষা করে? এটি করতে কিছু অনন্য আইডি ব্যবহার করতে হবে, যাতে আপনি ক্যাশেটি পুনরুদ্ধার করতে পারেন। আপনার উত্তরটি দুর্দান্ত, তবে অবশ্যই সম্পূর্ণ নয়। এবং একটি ক্যাশে ব্যবহার করা জিনিসগুলিকে কম রাজ্যহীন করে তুলবে।
আলেকজান্ডার মিলস

5

REST হ'ল জিনিসগুলি করার একটি পদ্ধতি, কোনও প্রোটোকল নয়। এমনকি যদি এটি সত্যিই জিইটি হয় তখন আপনি পোস্ট পছন্দ না করলেও এটি কার্যকর হবে।

আপনি যদি জিইটি, পোষ্ট ইত্যাদির "স্ট্যান্ডার্ড" সংজ্ঞায় থাকতে পারেন তবে অবশ্যই কোনও ক্যোয়ারী পোষ্ট করার বিষয়টি বিবেচনা না করে, সেই ক্যোয়ারীটি কোয়েরি আইডির সাথে সার্ভারে সঞ্চিত হবে এবং পরে জিইটি-র সাথে আইডি দ্বারা অনুরোধ করবে।


4

আপনার উদাহরণটি সম্পর্কে:, http://compute.com?content={base64file}আমি পোস্ট ব্যবহার করব কারণ আপনি গণনা করতে "কিছু" আপলোড করছেন। আমার কাছে এই "কিছু" সাধারণ প্যারামিটার হিসাবে উত্সের মতো মনে হয়।

সাধারণ অনুসন্ধানে এর বিপরীতে আমি জিইটি এবং পরামিতিগুলির সাথে আঁকতে শুরু করব। আপনি এপিআই-ক্লায়েন্টদের আপনার এপিআই দিয়ে টেস্ট করা এবং খেলতে এত সহজ করে তুলেছেন। কেবল পঠনযোগ্য অ্যাক্সেসটিকে (যা বেশিরভাগ ক্ষেত্রে ট্র্যাফিকের সিংহভাগই) যতটা সম্ভব সহজ করুন!

তবে বৃহত ক্যোয়ারী স্ট্রিংগুলির দ্বিধাটি জিইটির একটি বৈধ সীমাবদ্ধতা। এখানে আমি ব্যবহারিক হয়ে উঠব, যতক্ষণ না আপনি এই সীমাটি আঘাত করবেন না যতক্ষণ না জিইটি এবং ইউআরএল-প্যারামের সাথে যান। এটি 98% অনুসন্ধানের ক্ষেত্রে কাজ করবে। আপনি যদি এই সীমাটি হিট করেন তবেই কাজ করুন এবং তারপরে পে-লোড (মাইম-টাইপ সহ Content-Type: application/x-www-form-urlencoded) দিয়ে পোস্টও প্রবর্তন করুন ।

আপনি আরও বাস্তব-বিশ্বের উদাহরণ পেয়েছেন?


গণনা একটি বাস্তব বিশ্বের উদাহরণ ছিল। অনুসন্ধান সম্পর্কে, আমরা একাধিক বিক্রয় পয়েন্টে লেনদেনের সন্ধান করতে সক্ষম হতে চাই, সুতরাং বিক্রয় পয়েন্টগুলি নির্বাচন করতে আমরা একটি নতুন ব্রাউজার উইন্ডো খুলি। এবং যখন আমরা যাচাই করি তখন নির্বাচিত বিক্রয় পয়েন্টগুলি সেট করতে অনুসন্ধান ফর্মের একটি গোপন প্যারামিটারটি পরিবর্তন করি। যদি তাদের মধ্যে সত্যিই অনেকগুলি থাকে, তবে ফলাফলের অনুসন্ধানের অনুরোধটির খুব দীর্ঘ ক্যোয়ারী স্ট্রিং থাকবে।
cbliard

3

জিইটি চারপাশে বিভ্রান্তি একটি ব্রাউজার সীমাবদ্ধতা। যদি আপনি A2A বা P2P অ্যাপ্লিকেশনটির জন্য একটি রেস্টস্টুল ইন্টারফেস তৈরি করে থাকেন তবে আপনার জিইটি দৈর্ঘ্যের কোনও সীমাবদ্ধতা নেই।

এখন, আপনি যদি নিজের আরএসটিফুল ইন্টারফেসটি দেখতে (ব্রাউজ করার সময় / বিকাশ / ডিবাগিংয়ের সময়) কোনও ব্রাউজার ব্যবহার করতে চান তবে আপনি এই সীমাতে চলে যাবেন, তবে এটিকে ঘিরে পাওয়ার জন্য সেখানে সরঞ্জাম রয়েছে।


7
"জিইটি হ'ল ব্রাউজারের সীমাবদ্ধতা" - এটি একটি সার্ভার সীমাবদ্ধতাও। আপনি সমস্ত ওয়েব সার্ভারগুলিকে সীমাবদ্ধতা প্রয়োগ করার সন্ধান পাবেন এবং আপনার সিডিএন থাকলে তারাও একটি সীমা প্রয়োগ করতে পারে। অনুরোধটি সম্পাদন করতে অন্য সরঞ্জামগুলি ব্যবহার করা সার্ভারের সীমাবদ্ধতা হ্রাস করবে না।
কোর্টনি মাইলস

0

এটা একটা সহজ জিনিষ। পোস্ট ব্যবহার করুন। এইচটিটিপি জিইটির জন্য ইউআরএল দৈর্ঘ্যের উপর সীমাবদ্ধ করে না তবে সার্ভারগুলি তা করে। বাস্তববাদী হোন এবং পোস্টের সাহায্যে এটিকে ঘিরে কাজ করুন।

আপনি একটি জিইটি বডিও ব্যবহার করতে পারেন (এটি অনুমোদিত) তবে এটি দ্বিগুণ w

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.