ما هي أجزاء طلب HTTP؟
طلب HTTP هو طريقة (GET أو POST أو PUT أو PATCH أو DELETE …) وعنوان URL مستهدف — المسار مع معاملات الاستعلام — تليهما ترويسات، ولطرق حمل البيانات جسمٌ تسمّي ترويسة Content-Type صيغته. يعرّف RFC 9110 الطرق ودلالاتها: GET وHEAD آمنتان، وPUT وDELETE متكافئتان، وPOST ليست هذه ولا تلك، وهذا ما يقرر إن كان يجوز إعادة إرسال الطلب. وسطر أوامر cURL هو الطلب نفسه مكتوباً، وهو اللغة المشتركة لإعادة إنتاج استدعاء API في تقرير عيب.
اقرأ الدليل: ما هو اختبار API؟ وكيف تختبر REST API
كيفية استخدام منشئ طلبات API
- اختر الطريقة وأدخل عنوان URL (يمكن إضافة معاملات الاستعلام في تبويب «المعاملات» (Params)).
- أضف الترويسات، أو اختر نوع المصادقة، أو الصق جسم JSON في تبويب «الجسم» (Body).
- اضغط «إرسال». تظهر الاستجابة مع الحالة والوقت والحجم والجسم المنسّق والترويسات.
- افتح لوحة «التصدير» لنسخ الطلب بصيغة cURL أو كود برمجي لمجموعة اختباراتك.
- فعّل خيار «طلب مباشر من المتصفح» (Direct browser request) في الإعدادات عند استدعاء خادم محلي يسمح بـ CORS.
عبر المُرحِّل (الافتراضي)
- متصفحك هذه الصفحة
- مُرحِّل Mutqan
- واجهة API الهدف
- 1 من متصفحك إلى مُرحِّل Mutqan: طلبك الطريقة وعنوان URL والترويسات والجسم والمهلة واتباع إعادة التوجيه
- 2 مُرحِّل Mutqan داخليًا: يفحص الهدف تُرفض العناوين الخاصة وعناوين الاسترجاع والعناوين المحلية للرابط وأسماء المضيفات الداخلية والمنافذ غير المعتادة قبل إرسال أي طلب
- 3 من مُرحِّل Mutqan إلى واجهة API الهدف: الطريقة والجسم والترويسات المسموح بها لا تُمرَّر ترويسات أخرى مثل Cookie وHost؛ ويضيف المُرحِّل
X-Mutqan-Relay: 1 - 4 من واجهة API الهدف إلى مُرحِّل Mutqan: الاستجابة ردّ تُتبع إعادة التوجيه عند طلب ذلك مع إعادة فحص كل قفزة
- 5 من مُرحِّل Mutqan إلى متصفحك: الحالة والترويسات والجسم والحجم والتوقيت ردّ الاستجابات الأكبر يقتطعها المُرحِّل ويشير إلى ذلك
النتيجة: لا حاجة إلى CORS، ولا يخزّن المُرحِّل طلبك أو استجابتك أبداً.
«طلب مباشر من المتصفح» مفعّل في الإعدادات
- متصفحك هذه الصفحة
- واجهة API الهدف مثل localhost
- 1 من متصفحك إلى واجهة API الهدف: طلب CORS التمهيدي عند الحاجة مثلاً عند Content-Type من نوع
application/json، أو ترويسة Authorization، أو طريقة غير GET وHEAD وPOSTOPTIONS - 2 من واجهة API الهدف إلى متصفحك: يجب أن يستجيب له الهدف ردّ
- 3 من متصفحك إلى واجهة API الهدف: طلبك، مُرسَلاً عبر fetch
- 4 من واجهة API الهدف إلى متصفحك: الاستجابة ردّ تقتصر الترويسات المرئية للصفحة على ما يحدّده
Access-Control-Expose-Headers
النتيجة: يصل إلى localhost وواجهات الشبكات الداخلية ما دامت ترسل ترويسات CORS.
مزايا منشئ طلبات API
- الطريقة وعنوان URL ومعاملات الاستعلام والترويسات والجسم والمصادقة (Bearer وBasic ومفتاح API) في محرّر طلبات بتبويبات
- يرسل افتراضياً عبر مُرحِّل يتجاوز قيود CORS، أو مباشرةً من المتصفح لواجهات localhost والشبكات الداخلية
- لوحة استجابة مع شارة الحالة والتوقيت والحجم وعرض الجسم بصيغة منسّقة/خام/شجرية وجدول ترويسات قابل للترتيب
- تصدير الطلب بصيغة cURL أو fetch أو axios أو Python أو Java أو C# أو Go أو PHP أو Ruby أو HTTP خام
- منسّق لجسم JSON، وحفظ الطلب عبر تحديث الصفحة، والإرسال بالضغط على Ctrl/⌘+Enter
- لا تُخزَّن الترويسات الحساسة وبيانات الاعتماد أبداً
مثال على منشئ طلبات API
إرسال طلب POST لطلبية إلى نقطة نهاية اختبارية
الإدخال:
POST https://httpbin.org/anything/orders
Content-Type: application/json
{ "customer": "cust_1029", "items": [{ "sku": "ABC-1234", "qty": 2 }] }النتيجة:
200 OK · 412 ms · 1.1 KB · application/json
{
"json": { "customer": "cust_1029", "items": [ { "sku": "ABC-1234", "qty": 2 } ] },
"method": "POST",
…
}الأسئلة الشائعة حول منشئ طلبات API
هل يمرّ طلبي عبر خوادم متقن؟
افتراضياً نعم: يُرسل الطلب عبر مُرحِّل حتى لا تعيقه قيود CORS، ولا يخزّن المُرحِّل طلبك أو استجابتك أبداً. فعّل خيار «طلب مباشر من المتصفح» في الإعدادات لاستدعاء نقطة النهاية مباشرةً من متصفحك — وهو مفيد لواجهات localhost والشبكات الداخلية التي تسمح بـ CORS.
هل تُحفظ رموزي أو كلمات مروري؟
لا. تُحفظ قيم المصادقة والترويسات الحساسة (Authorization وCookie ومفاتيح API) في الذاكرة فقط طوال بقاء الصفحة الحالية. أما عنوان URL والمعاملات والجسم فتُحفظ في جلسة متصفحك حتى لا يضيع عملك عند تحديث الصفحة.
لماذا أحصل على خطأ شبكة عند استخدام http://localhost؟
يرفض المُرحِّل العناوين الخاصة وعناوين الاسترجاع (loopback) والعناوين المحلية للرابط (link-local) لأسباب أمنية. فعّل خيار «طلب مباشر من المتصفح» — يستطيع متصفحك الوصول إلى localhost ما دام الخادم المحلي يرسل ترويسات CORS.
هل يمكنني تصدير الطلب إلى كود؟
نعم. بعد الإرسال، تقدّم لوحة التصدير cURL (bash وPowerShell وcmd) وfetch/axios في JavaScript وPython وJava وC# وGo وPHP وRuby وHTTP خام.
هل يوجد حدّ للحجم؟
تُرحَّل أجسام الطلبات حتى 1 ميغابايت؛ أما الاستجابات الأكبر فيقتطعها المُرحِّل ويشير إلى ذلك.
ملاحظات تقنية
تمرّر نقطة نهاية المُرحِّل الطريقة والجسم وقائمةً محدّدة مسموحاً بها من ترويسات الطلب: Accept وAccept-Language وAccept-Encoding وAuthorization وContent-Type وCache-Control وIf-None-Match وIf-Modified-Since وOrigin وReferer وUser-Agent وSOAPAction وAccess-Control-Request-* وترويسات X-* ما عدا X-Forwarded-*. ولا تُمرَّر الترويسات الأخرى (مثل Cookie وHost وIdempotency-Key وPrefer)؛ ويضيف المُرحِّل الترويسة X-Mutqan-Relay: 1، ويضيف User-Agent خاصاً به إذا لم تحدّد واحداً. ويتبع عمليات إعادة التوجيه عند طلب ذلك مع إعادة فحص كل قفزة، ويعيد الحالة والترويسات والجسم (حتى حدّ المُرحِّل) والحجم والتوقيت (الزمن الإجمالي وزمن الوصول إلى أول بايت). وتُرفض العناوين الخاصة وعناوين الاسترجاع والعناوين المحلية للرابط وأسماء المضيفات الداخلية والمنافذ غير المعتادة قبل إرسال أي طلب.
في الوضع المباشر تُستخدم واجهة fetch في المتصفح؛ ويجب أن يستجيب الهدف لطلب CORS التمهيدي (preflight) الذي يرسله المتصفح عند استخدام طريقة غير GET وHEAD وPOST، أو Content-Type غير النماذج وmultipart وtext/plain (مثل application/json)، أو أي ترويسة غير مدرجة ضمن ترويسات CORS الآمنة (CORS-safelisted)، مثل Authorization. وتقتصر ترويسات الاستجابة المرئية لـ JavaScript على ما يحدّده الهدف في Access-Control-Expose-Headers.
المراجع
- RFC 9110: HTTP Semanticsمعاني أساليب HTTP وحقول الترويسات ورموز الحالة والتفاوض على المحتوى، بغضّ النظر عن إصدار البروتوكول.
- HTTP headers — MDNمرجع لترويسات الطلب والاستجابة: الصياغة والتوجيهات ودعم المتصفحات.
- RFC 7578: Returning Values from Forms: multipart/form-dataترميز multipart/form-data المستخدم لرفع الملفات وإرسال النماذج المختلطة.