يستخدم REST الـ HTTP methods القياسية كأفعال تعمل على الموارد. والمطابقة الشائعة مع CRUD (Create, Read, Update, Delete) هي:
يستخدم REST الـ HTTP methods القياسية كأفعال تعمل على الموارد. والمطابقة الشائعة مع CRUD (Create, Read, Update, Delete) هي:
| CRUD | Method | الاستخدام النموذجي |
|---|
| Create | POST | إضافة مورد جديد إلى مجموعة |
| Read | GET | جلب مورد أو قائمة |
| Update (كامل) | PUT | استبدال المورد بالكامل |
| Update (جزئي) | PATCH | تعديل بعض الحقول |
| Delete | DELETE | إزالة مورد |
POST /users HTTP/1.1
Content-Type: application/json
{ "name": "Ann", "email": "[email protected]" }
HTTP/1.1 201 Created
Location: /users/42
{ "id": 42, "name": "Ann", "email": "[email protected]" }
الـ PUT /users/42 يرسل التمثيل الكامل ويستبدله؛ أمّا PATCH /users/42 فيرسل الحقول المراد تغييرها فقط (مثل { "email": "[email protected]" }).
هاتان خاصيتان مختلفتان:
GET وHEAD وOPTIONS آمنة (safe).GET وPUT وDELETE وHEAD idempotent.Method Safe? Idempotent?
GET yes yes
HEAD yes yes
PUT no yes (replacing with the same body twice = same result)
DELETE no yes (deleting twice = still deleted)
PATCH no no* (depends on the patch; not guaranteed)
POST no no (posting twice usually creates two resources)
يسأل المُقابِلون هذا ليروا إن كنت تفهم دلالات HTTP جيدًا بما يكفي لبناء واجهات موثوقة. التمييز بين safe/idempotent ليس أكاديميًّا: فهو يحكم مباشرةً ما يُسمَح للعملاء والـ proxies والـ CDNs بفعله. الـ methods الآمنة (safe) يمكن تخزينها في cache وجلبها مسبقًا بحرية؛ والـ methods الـ idempotent يمكن إعادة محاولتها تلقائيًّا بعد انقطاع شبكي دون خطر تكرار الآثار الجانبية — ولهذا يستطيع العميل بأمان إعادة محاولة PUT أو DELETE لكن عليه الحذر عند إعادة محاولة POST (قد يُنشئ طلبين). الخطأ الكلاسيكي هو استخدام GET لإحداث آثار جانبية (مثل GET /users/42/delete)، ما يكسر الـ caching ويدع الزواحف (crawlers) تعدّل البيانات عرَضًا. اختيار الـ method الصحيح — واحترام عقده في الـ safety والـ idempotency — هو ما يجعل الـ API متوقّعًا وآمنًا لبناء الأدوات حوله.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع