يمثل REST (Representational State Transfer) نمطاً معمارياً لتصميم خدمات واجهات برمجة التطبيقات الشبكية عبر بروتوكول HTTP.
أفعال HTTP ودلالاتها
| الطريقة | الإجراء المستهدف | آمن | متكرر بأمان |
|---|---|---|---|
GET |
استرداد تمثيل المورد | نعم | نعم |
POST |
إنشاء مورد فرعي جديد | لا | لا |
PUT |
استبدال تمثيل المورد بالكامل | لا | نعم |
PATCH |
تحديث خصائص المورد جزئياً | لا | لا |
DELETE |
حذف المورد | لا | نعم |
HEAD |
استرداد الترويسات بدون جسم الاستجابة | نعم | نعم |
OPTIONS |
الاستعلام عن أساليب HTTP المدعومة لنقطة النهاية | نعم | نعم |
رموز حالة استجابة HTTP الشائعة
النجاح (2xx)
200 OK: نجح الطلب (يحتوي جسم الاستجابة على التمثيل).201 Created: تم إنشاء المورد بنجاح (توضح ترويسةLocationمسار URI).202 Accepted: تم قبول الطلب للمعالجة غير المتزامنة.204 No Content: نجح الإجراء مع عدم إرجاع جسم للاستجابة (شائع معDELETE).
أخطاء العميل (4xx)
400 Bad Request: صياغة غير صالحة أو معاملات خاطئة أو فشل التحقق.401 Unauthorized: المصادقة مفقودة أو غير صالحة.403 Forbidden: المستخدم مصادق عليه لكنه يفتقر لصلاحية الوصول إلى المورد.404 Not Found: مسار URI للمورد غير موجود.409 Conflict: يتعارض الطلب مع الحالة الحالية للمورد (مثلاً تكرار مفتاح فريد).422 Unprocessable Entity: طلب سليم الصياغة لكنه فشل في التحقق الدلالي للنطاق.429 Too Many Requests: تم تجاوز حد معدل الطلبات (Rate Limit).
أخطاء الخادم (5xx)
500 Internal Server Error: فشل عام غير معالج من جانب الخادم.502 Bad Gateway: أرجع الخادم المنبع (Upstream) استجابة غير صالحة.503 Service Unavailable: الخادم محمّل فوق طاقته أو قيد الصيانة.
مغلف الخطأ القياسي بصيغة JSON
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The email address provided is already registered.",
"details": [
{
"field": "email",
"issue": "unique_constraint_violated"
}
]
}
}