وصف المشكلة/الخطأ/السؤال
أنا أعمل من خلال دورات الأكاديمية (N8N101 و N8N103) وأواجه عقبة في
تمرينين يبدو أنهما ناتجان عن مشكلة من جانب الخادم على نقاط نهاية التدريب بالأكاديمية
بدلاً من مشكلة في سير العمل. أنشر الأدلة الكاملة حتى يكون قابلاً للتكرار.
الإعداد الذي يعمل (لماذا لا أعتقد أن المشكلة من طرفي):
- بيانات اعتماد مصادقة الرأس مع مفتاح API المشترك للدورة، المرسل كـ X-API-Key
- معرّف التقييم الخاص بي X-Assessment-ID المرسل في كل طلب: e92ae2fa551a70bccfed3545ad3aec70
- اكتمل التسجيل في الدورة بنجاح
- تعمل نقاط نهاية أداة وكيل N8N103 الثلاث في القسم 1 وترجع 200:
tools/order-status و tools/customer-info و tools/product-info
المشكلة — نقطتا نهاية من المفترض أن تُرجع البيانات ترجع 200 OK
مع جسم بحجم صفر بايت:
- https://learn.app.n8n.cloud/webhook/course/n8n101/sales-data
(تمرين “بناء خط أنابيب بيانات المبيعات”) - https://learn.app.n8n.cloud/webhook/course/n8n103/unreliable-api
(تمرين تصحيح الأخطاء/إعادة المحاولة في القسم 2)
ما استبعدته (اختبرت في 4 أغسطس، ~21:20-22:30 MST):
- المصادقة الخاطئة: مفتاح API خاطئ عن قصد يرجع 403 “Authorization data is
wrong!” — لذا فإن 200 مع المفتاح الفعلي يعني نجاح المصادقة. - معرّف التقييم المفقود: بدونه، تُرجع نقاط نهاية الأداة
422 [Validation Failed] — لذا يتم قراءة الرأس. - الفعل الخاطئ: POST إلى sales-data يرجع 404 “This webhook is not registered
for POST requests. Did you mean to make a GET request?” — GET هو الصحيح. - متغيرات الاستعلام: ?assessment_id=… و ?assessmentId=… و ?limit=10 و
رأس Accept: application/json جميعها ترجع نفس 200 مع 0 بايت.
المفتاح الصحيح، رأس التقييم الصحيح، الفعل الصحيح — 200 OK، جسم فارغ، على
نقاط النهاية الاثنتين اللتين وظيفتهما إرجاع البيانات.
هل يمكن لشخص ما من فريق الأكاديمية التحقق مما إذا كان مصدر البيانات المقنع خلف
sales-data و unreliable-api معطّلاً؟ وإذا كان الجسم الفارغ متوقعاً هناك،
ماذا يجب أن تتلقى سير العمل؟ أنا مستعد لتقديم طوابع زمنية للتنفيذ
أو تشغيل أي تشخيص. الدورات نفسها كانت ممتازة.
ما رسالة الخطأ (إن وجدت)؟لا توجد رسالة خطأ على نقاط النهاية الفاشلة نفسها — فهي ترجع HTTP 200
مع جسم فارغ، وهي المشكلة.
التأثيرات في المصب داخل التمارين:
- N8N101: Split Out يتلقى كائناً بدون حقل “orders”، ينتج 0
عناصر، وينتهي خط الأنابيب بعد عقدتين بدون خطأ. - N8N103: سير العمل ينشر الحقول المستخرجة إلى course/n8n103/retry-result،
والذي يرفضها بشكل صحيح مع 422 “[Validation Failed]” — لأن order_id و
customer_name و confirmation_code جميعها تُحل إلى لا شيء من
الاستجابة الفارغة في الأعلى.
يرجى مشاركة سير العمل الخاص بك
إعادة إنتاج بسيطة (أضف بيانات اعتماد مصادقة الرأس الخاصة بك مع مفتاح API الدورة —
قيم بيانات الاعتماد لا تُصدّر مع JSON):
{
"nodes": [
{
"parameters": {},
"name": "When clicking Test workflow",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0]
},
{
"parameters": {
"url": "https://learn.app.n8n.cloud/webhook/course/n8n101/sales-data",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Assessment-ID",
"value": "e92ae2fa551a70bccfed3545ad3aec70"
}
]
},
"options": {}
},
"name": "GetSalesData",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [220, 0]
}
],
"connections": {
"When clicking Test workflow": {
"main": [[{ "node": "GetSalesData", "type": "main", "index": 0 }]]
}
}
}
السلوك نفسه يُعاد إنتاجه مع curl البسيط، لذا ليست مشكلة تكوين العقدة:
GET مع X-API-Key + X-Assessment-ID → HTTP 200، Content-Length 0.
شارك الناتج المُرجع من آخر عقدة
عنصر واحد، كائن فارغ:
[
{}
]
متوقع (وفقاً للتمرين): جسم JSON يحتوي على مصفوفة “orders” لـ
sales-data؛ بيانات الطلب لـ unreliable-api.
معلومات عن إعداد n8n الخاص بك
- إصدار n8n:
- قاعدة البيانات (الافتراضي: SQLite):
- إعداد EXECUTIONS_PROCESS الخاص بـ n8n (الافتراضي: own, main):
- تشغيل n8n عبر (Docker أو npm أو سحابة n8n أو تطبيق سطح المكتب):
- نظام التشغيل: