২০ বছর পর HTTP পেল তার প্রথম নতুন মেথড
আপনি সম্ভবত এর আগেও এটি করেছেন।
আপনার পণ্যের জন্য সার্চ করা প্রয়োজন। আপনার সার্চ ফিল্টারগুলো একটি URL-এর জন্য অনেক বড়। এটি সমাধান করতে আপনি একটি POST রিকোয়েস্ট ব্যবহার করেন।
এটি কাজ করে। কিন্তু এটি একটি মিথ্যা। আপনি HTTP-কে বলছেন যে আপনি ডেটা পরিবর্তন করছেন, অথচ আপনি কেবল সেটি পড়ছেন।
২০২৬ সালের জুন মাসে, IETF RFC 10008 প্রকাশ করেছে। এটি QUERY নামক একটি নতুন HTTP মেথড সংজ্ঞায়িত করে। দুই দশকেরও বেশি সময়ের মধ্যে এটিই প্রথম নতুন মেথড। এটি উপরে উল্লিখিত সমস্যাটিই সমাধান করে।
বর্তমান সমস্যা
ডেটা পড়ার জন্য GET চমৎকার। এটি নিরাপদ এবং ক্যাশেবল (cacheable)। কিন্তু এটি রিকোয়েস্ট বডি (request body) বহন করতে পারে না। URL-এর ক্ষেত্রে অক্ষরের সীমাবদ্ধতাও রয়েছে।
POST বডি বহন করতে পারে। কিন্তু HTTP ধরে নেয় যে POST স্টেট (state) পরিবর্তন করে। এর মানে হলো আপনি অটোমেটিক ক্যাশিং এবং নিরাপদ রিট্রাই (retry) করার সুবিধা হারান। যদি একটি POST রিকোয়েস্ট টাইম-আউট হয়, তবে আপনি এটি সরাসরি পুনরায় চেষ্টা করতে পারেন না। আপনি জানেন না যে সার্ভার ইতিমধ্যে কিছু পরিবর্তন করে ফেলেছে কি না।
সমাধান: QUERY
QUERY হলো বডি সহ একটি GET রিকোয়েস্ট। এটি দুটি নিশ্চয়তা প্রদান করে:
- এটি নিরাপদ। এটি ডেটা পরিবর্তন করে না।
- এটি আইডেমপোটেন্ট (idempotent)। এটি দুবার পাঠালে একই ফলাফল পাওয়া যায় যা একবার পাঠালে পাওয়া যেত।
আজ এটি কীভাবে ব্যবহার করবেন
আপনি এখনই Axios বা Fetch দিয়ে এটি ব্যবহার করতে পারেন।
Axios উদাহরণ:
axios.request({
method: 'QUERY',
url: '/api/products',
data: { category: 'shoes', maxPrice: 100 }
})
Fetch উদাহরণ:
fetch('/api/products', {
method: 'QUERY',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ category: 'shoes', maxPrice: 100 })
})
পরবর্তীতে কী আশা করা যায়
এই পরিবর্তনটি রাতারাতি ঘটবে না। এখানে রোডম্যাপ দেওয়া হলো:
- ইনফ্রাস্ট্রাকচার: Nginx এবং Apache এই রিকোয়েস্টগুলো পাস করবে। QUERY মেথডটি অনুমোদন করতে আপনাকে আপনার WAF বা সিকিউরিটি রুল আপডেট করার প্রয়োজন হতে পারে।
- ফ্রেমওয়ার্ক: ২০২৬ এবং ২০২৭ সাল জুড়ে Spring, Rails এবং Express-এ নেটিভ সাপোর্ট যুক্ত হওয়ার কথা রয়েছে।
- CDNs: যেহেতু Cloudflare এবং Akamai-এর ইঞ্জিনিয়াররা এটি লিখতে সাহায্য করেছেন, তাই দ্রুত CDN সাপোর্ট আশা করা যায়। এটি ক্যাশিং অনেক সহজ করে তোলে।
কেন এটি আপনার কোডের জন্য গুরুত্বপূর্ণ
১. অটোমেটিক রিট্রাই: যেহেতু QUERY আইডেমপোটেন্ট, তাই মোবাইল অ্যাপ এবং ক্লায়েন্টগুলো ব্যর্থ রিকোয়েস্টগুলো নিরাপদে পুনরায় চেষ্টা করতে পারে। ২. উন্নত ক্যাশিং: CDNs বডির ওপর ভিত্তি করে QUERY রেসপন্স ক্যাশে করতে পারে। আপনি আপনার হাতে তৈরি করা (hand-rolled) Redis ক্যাশ লেয়ারগুলো মুছে ফেলতে পারেন। ৩. পরিচ্ছন্ন URL: আপনাকে আর URL কুয়েরি প্যারামিটারে জটিল JSON ঠাঁসিয়ে রাখতে হবে না। ৪. সিম্যান্টিক API: আপনার API ডকুমেন্টেশন আরও স্পষ্ট হবে। ডেভেলপাররা ঠিক জানবেন কোন এন্ডপয়েন্টগুলো ডেটা পড়ে এবং কোনগুলো ডেটা লেখে।
আপনার বর্তমান POST এন্ডপয়েন্টগুলো অডিট করে আপনার টিমকে প্রস্তুত করুন। কোনগুলো শুধুমাত্র ডেটা পড়ে তা শনাক্ত করুন। সেগুলোই হবে আপনার ভবিষ্যৎ QUERY এন্ডপয়েন্ট।
