طريقة HTTP التي كنا نستخدمها بشكل زائف لمدة 16 عامًا

يواجه مطورو الـ Backend مشكلة مستمرة مع نقاط نهاية البحث (search endpoints).

تريد استخدام GET لأن البحث هو عملية قراءة. لكن فلاتر البحث تصبح كبيرة جدًا. يصل طول رابط URL الخاص بك إلى ألفي حرف. تقوم الخوادم الوكيلة (Proxies) باقتطاع طلبك، فيتعطل بحثك.

تنتقل إلى POST لحل مشكلة الحد الأقصى. هذا يعمل، لكنه بمثابة كذبة؛ فـ POST تخبر كل وكيل (proxy) وذاكرة تخزين مؤقت (cache) بأنك تقوم بتغيير البيانات. وهذا يوقف جميع عمليات التخزين المؤقت، وبذلك تفقد سرعة GET.

على مدار ستة عشر عامًا، لم يكن لدينا حل وسط.

في يونيو 2026، نشرت IETF وثيقة RFC 10008. تقدم هذه الوثيقة طريقة QUERY. وهي أول طريقة HTTP جديدة منذ عام 2010.

تجمع 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 كمفتاح، بينما يجب أن تستخدم ذاكرة التخزين المؤقت لـ QUERY جسم الطلب كجزء من المفتاح. إذا لم تكن بنيتك التحتية تفهم هذا، فقد يرى مستخدم واحد نتائج بحث خاصة بمستخدم آخر.

لا تتسرع في استخدام هذا في بيئة الإنتاج (production) بعد، فالمحيط التقني (ecosystem) يحتاج إلى وقت للمواكبة.

• المتصفحات لا تدعم QUERY في fetch() بعد. • نماذج HTML تدعم فقط GET و POST. • سترفض العديد من بوابات الـ API وWAFs الطرق غير المعروفة.

صمم الـ API الخاص بك مع وضع QUERY في الاعتبار، ولكن احتفظ بنقاط نهاية POST في الوقت الحالي.

تنهي QUERY تسوية طويلة الأمد، فهي تتيح لك طرح أسئلة معقدة دون الكذب على الشبكة.

هل تنتظر حتى يواكب النظام البيئي التغيير، أم أنك تختبر QUERY الآن؟

المصدر: https://dev.to/arya_koste_5845807df94776/query-the-http-method-weve-been-faking-for-16-years-f9i