যে HTTP মেথডটি আমরা ১৬ বছর ধরে নকল করে আসছি

ব্যাকএন্ড ডেভেলপাররা সার্চ এন্ডপয়েন্ট (search endpoints) নিয়ে একটি নিরন্তর সমস্যার সম্মুখীন হন।

আপনি GET ব্যবহার করতে চান কারণ সার্চ করা একটি রিড অপারেশন (read operation)। কিন্তু আপনার সার্চ ফিল্টারগুলো অনেক বড় হয়ে যায়। আপনার URL দুই হাজার ক্যারেক্টার ছাড়িয়ে যায়। প্রক্সিগুলো আপনার রিকোয়েস্ট ছোট করে ফেলে (truncate)। ফলে আপনার সার্চ কাজ করা বন্ধ করে দেয়।

এই সীমাবদ্ধতা দূর করতে আপনি POST-এ সুইচ করেন। এটি কাজ করে ঠিকই, কিন্তু এটি একটি মিথ্যা। POST প্রতিটি প্রক্সি এবং ক্যাশকে (cache) জানায় যে আপনি ডেটা পরিবর্তন করছেন। এটি সমস্ত ক্যাশিং (caching) বন্ধ করে দেয়। ফলে আপনি GET-এর গতি হারিয়ে ফেলেন।

ষোলো বছর ধরে আমাদের কাছে কোনো মধ্যপন্থা ছিল না।

২০২৬ সালের জুন মাসে, IETF RFC 10008 প্রকাশ করেছে। এটি QUERY মেথডটির সূচনা করে। ২০১০ সালের পর এটিই প্রথম নতুন HTTP মেথড।

QUERY মেথডটি GET এবং POST-এর সেরা বৈশিষ্ট্যগুলোর সমন্বয় ঘটায়:

• এটি জটিল ফিল্টারের জন্য একটি রিকোয়েস্ট বডি (request body) বহন করে। • এটি নিরাপদ (safe), যার অর্থ সার্ভারের স্টেট (state) পরিবর্তন হয় না। • এটি আইডেমপোটেন্ট (idempotent), যার অর্থ আপনি একই ফলাফল পেতে এটি দুবার চালাতে পারেন। • এটি ক্যাশেবল (cacheable), যা CDN-গুলোকে রেসপন্স স্টোর করতে দেয়।

একটি QUERY রিকোয়েস্ট দেখতে এইরকম:

QUERY /products HTTP/1.1
Host: api.shop.example
Content-Type: application/json

{
  "filter": { "category": "boots", "inStock": true },
  "sort": "-price",
  "limit": 20
}

নতুন RFC-তে Accept-Query হেডারটিও যুক্ত করা হয়েছে। এটি একটি API-কে জানাতে সাহায্য করে যে এটি কোন কোন কুয়েরি ফরম্যাট সাপোর্ট করে।

ডেভেলপারদের জন্য একটি সতর্কতা:

একটি QUERY রিকোয়েস্ট ক্যাশ করা GET রিকোয়েস্ট ক্যাশ করার চেয়ে আলাদা। একটি GET ক্যাশ URL-কে কী (key) হিসেবে ব্যবহার করে। একটি QUERY ক্যাশকে অবশ্যই রিকোয়েস্ট বডি-কে কী-এর অংশ হিসেবে ব্যবহার করতে হবে। যদি আপনার ইনফ্রাস্ট্রাকচার (infrastructure) এটি বুঝতে না পারে, তবে একজন ব্যবহারকারী অন্য একজন ব্যবহারকারীর ব্যক্তিগত সার্চ রেজাল্ট দেখে ফেলতে পারেন।

এখনই এটি প্রোডাকশনে (production) ব্যবহার করার জন্য তাড়াহুড়ো করবেন না। ইকোসিস্টেমের (ecosystem) সাথে তাল মিলিয়ে চলতে কিছুটা সময়ের প্রয়োজন।

• ব্রাউজারগুলো এখনও fetch()-এ QUERY সাপোর্ট করে না। • HTML ফর্মগুলো শুধুমাত্র GET এবং POST সাপোর্ট করে। • অনেক API গেটওয়ে এবং WAF অজানা মেথডগুলো রিজেক্ট করে দেবে।

আপনার API ডিজাইন করার সময় QUERY-এর কথা মাথায় রাখুন, তবে আপাতত আপনার POST এন্ডপয়েন্টগুলোই ব্যবহার করুন।

QUERY একটি দীর্ঘ আপস বা সমঝোতার অবসান ঘটায়। এটি নেটওয়ার্ককে মিথ্যা তথ্য না দিয়েও আপনাকে জটিল প্রশ্ন করতে সাহায্য করে।

আপনি কি ইকোসিস্টেমের সাথে তাল মিলিয়ে যাওয়ার জন্য অপেক্ষা করছেন, নাকি এখন QUERY টেস্ট করছেন?

উৎস: https://dev.to/arya_koste_5845807df94776/query-the-http-method-weve-been-faking-for-16-years-f9i