بنية الـ Error Response
أي خطأ من NestJS يأتي بهذه الصيغة:
{
"statusCode": 400,
"message": "name is required",
"error": "Bad Request"
}أحياناً message يكون array (مثل validation errors متعدّدة):
{
"statusCode": 400,
"message": ["name should not be empty", "triggerType must be a valid enum"],
"error": "Bad Request"
}أكواد HTTP الشائعة
| الكود | الرسالة | السبب |
|---|---|---|
| 200 | OK | طلب ناجح + body في الاستجابة. |
| 201 | Created | مورد جديد أُنشئ بنجاح (POST). |
| 400 | Bad Request | parameters ناقصة أو غير صحيحة. |
| 401 | Unauthorized | Token مفقود أو منتهي. |
| 403 | Forbidden | Token صحيح لكن المستخدم ما يستطيع هذه العملية. |
| 404 | Not Found | المورد غير موجود. |
| 409 | Conflict | تعارض في الحالة (مثل: workflow غير نشط). |
| 429 | Too Many Requests | تجاوزت rate limit. راجع حدود الطلبات. |
| 500 | Internal Server Error | خطأ غير متوقع. الـ logs تشخّصه. |
| 502 | Bad Gateway | Backend متوقّف أو الـ tunnel مكسور. |
التعامل مع الأخطاء (Best Practices)
- تحقّق من
statusCode، لا تحلّلmessage— الـ wording يتغيّر. - retry على 5xx و 429 — مع exponential backoff.
- لا تعمل retry على 4xx (إلا 429) — السبب من جهة العميل.
- للـ 401 — أعد المصادقة (احصل على token جديد).