DELETE
طريقة DELETE DELETE
DELETE تطلب إزالة المورد المحدَّد بالرابط، وهي عديمة الأثر التراكمي حسب المواصفة.
DELETE تطلب من الخادم حذف المورد الموجود عند الرابط. تُعتبر عديمة الأثر التراكمي: تكرار طلب حذف مورد محذوف مسبقًا لا يُفترض أن يسبب خطأً جديدًا في تصميم مثالي، رغم أن الخادم قد يعيد 404 في المحاولة الثانية لأن المورد لم يعد موجودًا — وهذا لا يتعارض مع كونها عديمة الأثر التراكمي، لأن حالة النظام النهائية (المورد غير موجود) تبقى واحدة.
في كثير من الأنظمة الحقيقية يُستبدل الحذف الفعلي بحذف ناعم (Soft Delete) — تعليم السجل كمحذوف بدل إزالته من قاعدة البيانات — للحفاظ على السجلّ التاريخي وإمكانية الاسترجاع.
الصياغة
DELETE /resource/:id
📄 مثال
DELETE /api/articles/42 HTTP/1.1 // الاستجابة الشائعة HTTP/1.1 204 No Content
أهم النقاط
| العنصر | الوظيفة |
|---|---|
| عديمة الأثر التراكمي | الحالة النهائية (مورد غير موجود) واحدة رغم اختلاف كود الحالة بين المحاولات |
| 204 عند النجاح بلا محتوى | الرد الشائع؛ 200 مقبول أيضًا إن أعاد جسمًا يوثّق نتيجة الحذف |
| غير آمنة | تُغيّر حالة الخادم فعليًا |
💡 نصائح عملية
- أعد 204 No Content إن لم يكن هناك داعٍ لإعادة جسم في الرد
- فكّر بالحذف الناعم (soft delete) للبيانات التي قد تحتاج استرجاعًا أو تدقيقًا لاحقًا
⚠️ أخطاء شائعة
- إعادة 500 عند حذف مورد غير موجود أصلًا — الأصح 404، أو 204 إن اعتبرت العملية "محقَّقة" بلا خطأ
- السماح بحذف المورد عبر رابط GET قابل للنقر — يفتح ثغرة CSRF تمامًا مثل GET للتعديل
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار REST-API الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs