كيفية استخدام مولّد أوامر cURL
- املأ الطريقة وعنوان URL والترويسات والمتن والمصادقة.
- اختر غلاف الأوامر (shell) الذي ستلصق فيه الأمر وفعّل الخيارات التي تحتاجها.
- انسخ الأمر؛ واقرأ شروحات العلامات إن كنت جديداً على 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.