مولّد أوامر cURL

تعمل في المتصفح الويب

كوّن أمر cURL بتهريب صحيح لكل من bash وPowerShell وcmd، بما في ذلك العلامات -X و-H و--data-raw و-L و--compressed و-k و--max-time.

الخصوصية: تعمل هذه الأداة بالكامل في متصفحك. لا تغادر بياناتك جهازك أبداً.
جارٍ تحميل الأداة…

ما هي أجزاء طلب HTTP؟

طلب HTTP هو طريقة (GET أو POST أو PUT أو PATCH أو DELETE …) وعنوان URL مستهدف — المسار مع معاملات الاستعلام — تليهما ترويسات، ولطرق حمل البيانات جسمٌ تسمّي ترويسة Content-Type صيغته. يعرّف RFC 9110 الطرق ودلالاتها: GET وHEAD آمنتان، وPUT وDELETE متكافئتان، وPOST ليست هذه ولا تلك، وهذا ما يقرر إن كان يجوز إعادة إرسال الطلب. وسطر أوامر cURL هو الطلب نفسه مكتوباً، وهو اللغة المشتركة لإعادة إنتاج استدعاء API في تقرير عيب.

اقرأ الدليل: ما هو اختبار API؟ وكيف تختبر REST API

كيفية استخدام مولّد أوامر cURL

  1. املأ الطريقة وعنوان URL والترويسات والمتن والمصادقة.
  2. اختر غلاف الأوامر (shell) الذي ستلصق فيه الأمر وفعّل الخيارات التي تحتاجها.
  3. انسخ الأمر؛ واقرأ شروحات العلامات إن كنت جديداً على curl.

مزايا مولّد أوامر cURL

  • اقتباس صحيح لكل من bash/zsh وPowerShell (curl.exe مع علامات backtick) وWindows cmd (استمرار الأسطر بـ ^، وتهريب علامات الاقتباس، ومضاعفة %)
  • مصادقة Bearer وBasic ومفتاح API كترويسات أو معاملات استعلام
  • متون --data-raw، وخيارات -L و--compressed و-k و-i و-v و-sS و--max-time و-o
  • يحذف -X POST الزائدة عند وجود متن، تماماً كما يتصرف curl
  • شرح لكل علامة بلغة مبسطة أسفل الأمر

مثال على مولّد أوامر cURL

إرسال JSON عبر POST مع رمز (bash)

الإدخال:

POST https://api.example.com/v1/issues · Bearer ghp_… · Body {"title":"Fix login"} · --compressed

النتيجة:

curl https://api.example.com/v1/issues \
  -H 'Authorization: Bearer ghp_…' \
  -H 'Content-Type: application/json' \
  --data-raw '{"title":"Fix login"}' \
  --compressed

الأسئلة الشائعة حول مولّد أوامر cURL

لماذا لا توجد -X POST في الأمر المولَّد؟

يتحوّل curl تلقائياً إلى POST عند وجود متن (-d / --data-raw)، لذا فإن -X POST زائدة. لا تُخرَج -X إلا للطرق الأخرى (PUT وPATCH وDELETE) أو لطلب POST دون متن.

ما الفرق بين مخرجات bash وPowerShell وcmd؟

يستخدم bash علامات اقتباس مفردة واستمرار الأسطر بالشرطة المائلة العكسية. ويستخدم PowerShell الأمر curl.exe (لأن «curl» اسم بديل لـ Invoke-WebRequest) مع استمرار الأسطر بـ backtick ومضاعفة علامات الاقتباس المفردة. أما cmd فلا يدعم علامات الاقتباس المفردة، لذا تُهرَّب علامات الاقتباس المزدوجة الداخلية على شكل \" وتستمر الأسطر بـ ^.

هل أستخدم -d أم --data-raw؟

يرسل --data-raw النص كما هو تماماً. أما مع -d فتُعامل القيمة التي تبدأ بـ @ على أنها اسم ملف — وهو أمر مفاجئ مع متون JSON. لذلك يستخدم المولّد --data-raw.

ما وظيفة --compressed؟

يضيف ترويسة Accept-Encoding لـ gzip/brotli ويفكّ ضغط الاستجابة تلقائياً، بما يطابق سلوك المتصفح ويقلّل حجم النقل.

ملاحظات تقنية

تُطابَق أسماء الترويسات مع قواعد token في RFC 9110، وتُرفض القيم الحاوية CR أو LF. ويُستنتج نوع المتن الخالي من Content-Type: كائن أو مصفوفة JSON تصبح application/json، وصيغة a=1&b=2 تصبح application/x-www-form-urlencoded، والبادئ بـ < يصبح application/xml، وما عدا ذلك text/plain. وتُدرج مصادقة Bearer وBasic ترويسة Authorization ما لم تُكتب واحدة يدوياً، وتُرمَّز بيانات Basic بـ UTF-8 قبل Base64. ويُلحق مفتاح API في سلسلة الاستعلام عبر encodeURIComponent، ولا يُعاد ترميز عنوان URL نفسه أبداً.

الاقتباس حسب الصدفة (shell): يترك bash القيم المطابقة لـ [A-Za-z0-9_-./:@=+%,] دون اقتباس، وإلا يحيطها بعلامات مفردة ويكتب المضمّنة منها '\''؛ ويستخدم PowerShell العلامات المفردة دائماً ويضاعف الداخلية؛ ويستخدم cmd العلامات المزدوجة ويهرّب \" ويضاعف % و^. وتبقى المتون متعددة الأسطر حرفية. تتحول HEAD إلى -I، ولا تظهر -X إلا للطرق غير GET وHEAD وPOST المصحوبة بمتن، وتُحدّ --max-time بـ 3600. وتُكبَّر أحرف الطريقة وتُجرَّد مما ليس حرفاً، فتمرّ أفعال مخصصة مثل PURGE.

المراجع

  • RFC 9110: HTTP SemanticsIETF · 2022معاني أساليب HTTP وحقول الترويسات ورموز الحالة والتفاوض على المحتوى، بغضّ النظر عن إصدار البروتوكول.
  • HTTP headers — MDNMDN Web Docs (Mozilla)مرجع لترويسات الطلب والاستجابة: الصياغة والتوجيهات ودعم المتصفحات.
  • RFC 7578: Returning Values from Forms: multipart/form-dataIETF · 2015ترميز multipart/form-data المستخدم لرفع الملفات وإرسال النماذج المختلطة.