حصل بروتوكول HTTP على أول طريقة جديدة له منذ 20 عاماً
من المرجح أنك قمت بهذا من قبل.
تحتاج إلى البحث عن منتجات. فلاتر البحث لديك كبيرة جداً بحيث لا يمكن وضعها في رابط URL. ولحل هذه المشكلة، تستخدم طلب POST.
الأمر يعمل، لكنه مجرد خدعة. أنت تخبر HTTP بأنك تقوم بتغيير البيانات بينما أنت تقوم فقط بقراءتها.
في يونيو 2026، نشرت IETF وثيقة RFC 10008. وهي تُعرف طريقة HTTP جديدة تسمى QUERY. هذه هي أول طريقة جديدة منذ أكثر من عقدين من الزمن، وهي تحل المشكلة المذكورة أعلاه تماماً.
المشكلة الحالية
طريقة GET رائعة لقراءة البيانات؛ فهي آمنة وقابلة للتخزين المؤقت (cacheable). لكنها لا تستطيع حمل جسم طلب (request body). كما أن روابط URL لها حدود لعدد الأحرف.
طريقة POST تحمل جسماً للطلب، لكن HTTP يفترض أن POST تغير الحالة (state). وهذا يعني أنك ستفقد ميزة التخزين المؤقت التلقائي وإعادة المحاولة الآمنة. إذا انتهت مهلة طلب 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 هذه الطلبات. قد تحتاج إلى تحديث WAF الخاص بك أو قواعد الأمان للسماح بطريقة QUERY.
- أطر العمل (Frameworks): توقع أن تضيف Spring و Rails و Express دعماً أصلياً خلال عامي 2026 و2027.
- شبكات توصيل المحتوى (CDNs): بما أن مهندسين من Cloudflare و Akamai ساعدوا في كتابة هذه الوثيقة، فتوقع دعماً سريعاً من الـ CDNs، مما يجعل التخزين المؤقت أسهل بكثير.
لماذا يهم هذا الكود الخاص بك
- إعادة المحاولة التلقائية: بما أن QUERY متماثلة (idempotent)، يمكن لتطبيقات الهاتف والعملاء إعادة محاولة الطلبات الفاشلة بأمان.
- تخزين مؤقت أفضل: يمكن لشبكات الـ CDNs تخزين استجابات QUERY مؤقتاً بناءً على الجسم. يمكنك حينها حذف طبقات التخزين المؤقت التي قمت ببنائها يدوياً باستخدام Redis.
- روابط URL أكثر نظافة: لن تحتاج بعد الآن إلى حشر JSON معقد داخل معاملات الاستعلام (query parameters) في رابط URL.
- واجهات برمجة تطبيقات (APIs) دلالية: ستصبح وثائق الـ API الخاصة بك أكثر وضوحاً، حيث سيعرف المطورون بالضبط أي النهايات الطرفية (endpoints) تقرأ البيانات وأيها تكتبها.
جهز فريقك من خلال مراجعة نهايات POST الطرفية الحالية لديك. حدد النهايات التي تقرأ البيانات فقط؛ فهذه ستكون نهايات QUERY المستقبلية الخاصة بك.
