Menu
flag Ar iconالعربيةdown icon

محوّل cURL

حوّل أي أمر curl إلى fetch وaxios وPython requests وGo وPHP والمزيد.

آخر تحديث

ألصق أمر curlألصق أمر curl للبدء
JavaScript (fetch)
ألصق أمر curl أعلاه لتوليد الكود في 12 لغة.

ما هو محوّل cURL؟

محوّل cURL يحوّل أمر curl — وهو الصيغة التي يستخدمها كل توثيق API وكل تصدير من Postman وكل مساعد ذكاء اصطناعي — إلى كود جاهز للصق في لغة البرمجة التي تعمل بها فعليًا. الترويسات، وسلاسل الاستعلام، وأجسام JSON، وملفات multipart، والمصادقة الأساسية، وملفات الكوكيز كلها تُنقل تلقائيًا، فلا حاجة لترجمة الطلب يدويًا.

صيغة curl هي الطريقة العالمية لوصف طلب HTTP، لكنك نادرًا ما *تشغّل* curl في الإنتاج. أنت تشغّل JavaScript fetch، أو Python requests، أو حزمة net/http في Go، أو ما تستخدمه منصّتك. هذه الأداة تسدّ تلك الفجوة: ألصق curl، انقر على التبويب، انسخ الكود.

كل شيء يعمل محليًا داخل متصفحك. أمر curl وترويساتك وتوكناتك لا تغادر جهازك أبدًا — وهذا مفيد عند لصق أوامر تحتوي على توكنات Bearer حقيقية أو ملفات كوكيز جلسة.

ما الذي ستتعلّمه أثناء التحويل

  • أعلام curl تُترجم إلى مفاهيم محدّدة في كل عميل HTTP: -H ترويسة طلب، و-d جسم، و-X طريقة الطلب، و-u مصادقة أساسية، و-F حقل نموذج multipart.
  • إذا وجد curl جسمًا (-d أو --data أو -F) ولم يجد -X، فإنه يعتمد POST افتراضيًا — وهذا نفس السلوك الافتراضي لمعظم العملاء، لذا فإن غياب -X يبقى POST في الإخراج.
  • أجسام JSON تختلف عن أجسام النماذج. Content-Type: application/json يعني أن الجسم يُرسل حرفيًا، أمّا application/x-www-form-urlencoded فيعني أن أزواج المفتاح/القيمة تُجمع بـ &.

كيف تحوّل curl إلى كود خطوة بخطوة

  1. ألصق أمر curl

    ضع الأمر كاملًا — بما في ذلك علامات \ لاستكمال الأسطر المنسوخة من التوثيق — في مربّع الإدخال. المحلّل ينظّف علامات الاقتباس الذكية وعلامات موجّه PowerShell تلقائيًا.

  2. اختر اللغة المستهدفة

    تغطّي التبويبات JavaScript fetch وTypeScript وNode axios وPython requests وPython httpx وGo وPHP وRuby وJava HttpClient وC# HttpClient وHTTPie وPowerShell. التبديل بين التبويبات مجاني — التحليل يعمل مرة واحدة فقط.

  3. افحص الطلب بعد التحليل

    افتح لوحة *الطلب بعد التحليل* للتأكّد أن الطريقة، والـ URL، والترويسات، ونوع الجسم، والخيارات مثل insecure أو follow redirects انتقلت كما توقّعت.

  4. انسخ وعدّل المصادقة

    انسخ الكود المُولّد إلى مشروعك. إذا تضمّن curl توكن Bearer أو كوكيز، استبدل القيمة الحرفية بمتغيّر بيئة قبل عمل commit.

مرجع سريع لأعلام cURL

الأعلام التي يفهمها هذا المحوّل وما تُترجم إليه في الكود المُولّد.

العلمالمعنىمثال
-X, --requestطريقة HTTP-X POST
-H, --headerترويسة طلب (يمكن تكرارها)-H 'Accept: application/json'
-d, --dataجسم الطلب — يُرمّز URL افتراضيًا-d 'name=Ada&age=30'
--data-rawجسم بدون توسيع @file--data-raw '$body'
--data-urlencodeترميز جزء من الجسم بصيغة percent-encode--data-urlencode 'q=hello world'
-F, --formحقل نموذج multipart (استخدم @file للملفات)-F 'avatar=@photo.jpg'
-u, --userمصادقة أساسية ← Authorization: Basic …-u alice:s3cret
-G, --getرفع الجسم إلى سلسلة الاستعلام وإرسال GET-G -d 'q=ada'
-b, --cookieترويسة الكوكيز-b 'session=abc'
-A, --user-agentترويسة User-Agent-A 'MyApp/1.0'
-L, --locationاتباع تحويلات 3xx-L
-k, --insecureتجاوز التحقق من TLS (للتطوير فقط!)-k
--compressedقبول استجابة بصيغة gzip/deflate/br--compressed
--max-timeمهلة الطلب الكاملة بالثواني--max-time 30

أمثلة على تحويل cURL

طلب GET مع سلسلة استعلام وترويسة مصادقة

curl
curl 'https://api.example.com/v1/lessons?limit=20&track=python' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.demo'
JavaScript (fetch)
const response = await fetch('https://api.example.com/v1/lessons?limit=20&track=python', {  method: 'GET',  headers: {    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.demo'  }});const data = await response.json();

معاملات الاستعلام داخل الـ URL تبقى في الـ URL — المحوّل لا يفصلها إلى كائن params مستقل في fetch. أمّا في axios وrequests، فسترى المعاملات مرفوعة إلى params / params= لتحسين القراءة.

طلب POST بجسم JSON

curl
curl 'https://api.example.com/v1/users' \  -H 'Content-Type: application/json' \  --data-raw '{"name":"Ada","age":36}'
Python (requests)
import requests
headers = {    'Content-Type': 'application/json',}json_data = {"name":"Ada","age":36}
response = requests.post('https://api.example.com/v1/users', headers=headers, json=json_data)response.raise_for_status()

عندما يُحلَّل الجسم بصيغة JSON وتكون قيمة Content-Type هي application/json، يُخرج المحوّل json= لـ requests وdata: (ككائن مُحلَّل) لـ axios. النص الأصلي يُحفظ كما هو عندما يفشل JSON.parse — ولا يُعاد كتابته.

رفع ملف multipart

curl
curl 'https://api.example.com/upload' \  -F 'caption=Hello' \  -F 'photo=@./avatar.jpg'
Python (requests)
import requests
files = {    'caption': (None, 'Hello'),    'photo': open('./avatar.jpg', 'rb'),}
response = requests.post('https://api.example.com/upload', files=files)response.raise_for_status()

العلم -F field=@file يتحوّل إلى رفع ملف حقيقي (open('…', 'rb') في Python، وFormData.append في JavaScript). أمّا حقول -F البسيطة فتتحوّل إلى قيم نموذج عادية. تعرض المعاينة عنصرًا نائبًا TODO لكائنات الملفات التي ستحتاج لتوفيرها وقت التشغيل.

مصادقة أساسية مع كوكيز

curl
curl 'https://api.example.com/me' \  -u alice:s3cret \  -b 'session=2f9a; theme=dark'
JavaScript (fetch)
const response = await fetch('https://api.example.com/me', {  method: 'GET',  headers: {    'Authorization': 'Basic YWxpY2U6czNjcmV0',    'Cookie': 'session=2f9a; theme=dark'  }});

المصادقة الأساسية تُدمج في ترويسة Authorization واحدة. أمّا الكوكيز فتُربط بـ ; وتُرسل في ترويسة Cookie واحدة — وهذا تمامًا ما يفعله curl على الشبكة.

أخطاء شائعة عند تحويل curl

  • لصق curl يحتوي على علامات اقتباس ذكية (', ', ", ") منسوخة من تدوينة — تبدو كأنّها علامات اقتباس لكنها تكسر تحليل الشِل. المحوّل ينظّفها، لكن انسخ الأمر الأصلي قدر الإمكان.
  • ترك العلم -k (--insecure) في الإنتاج. هذا يعطّل التحقق من شهادات TLS — ولا بأس في التطوير المحلي، لكنه خطر في حركة المرور الحقيقية.
  • نسيان أن --data-raw و--data يختلفان في السلوك — --data يُرمّز المدخل بـ URL encoding. استخدم --data-raw لأجسام JSON التي تحتوي على @ أو &.

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

ما اللغات التي يدعمها المحوّل؟
اثنا عشر هدفًا جاهزًا: JavaScript (fetch)، وTypeScript (fetch)، وNode (axios)، وPython (requests)، وPython (httpx)، وGo (net/http)، وPHP (curl)، وRuby (Net::HTTP)، وJava (HttpClient)، وC# (HttpClient)، وHTTPie، وPowerShell (Invoke-RestMethod). كلها تُولَّد من نفس التمثيل المُحلَّل — والتبديل بين التبويبات فوري.
هل يتعامل مع رفع multipart والعلم -F؟
نعم. -F field=value يتحوّل إلى حقل نموذج عادي، و-F file=@path يتحوّل إلى رفع ملف حقيقي باستخدام FormData (في JS) وfiles= (في Python) وCURLFile (في PHP) وهكذا. مسارات الملفات تظهر كعناصر نائبة TODO ستحتاج لربطها بـ File أو Buffer أو stream وقت التشغيل.
هل يُرسل أمر curl إلى خادم؟
لا. المحلّل وكل مولّدات الكود تعمل داخل متصفحك. توكنات Bearer والكوكيز وأجسام الطلبات لا تغادر جهازك — وافتراضيًا نقوم بإخفائها في معاينة *الطلب بعد التحليل*.
لماذا يبدو curl في ويندوز مختلفًا؟
أمر curl.exe في ويندوز (وكذلك CMD وPowerShell) يستخدم ^ أو علامة backtick \` لاستكمال السطر، وقد يقتبس النصوص بشكل مختلف. المحوّل ينظّف الأنماط الشائعة لويندوز، لكن إذا بدا أن اللصق فيه خلل، جرّب نسخ الأمر في سطر واحد.
هل يدعم طلبات GraphQL؟
نعم — طلب GraphQL ما هو إلا POST بجسم JSON يحتوي على query وvariables. ألصق curl، وسيُخرج المحوّل طلب JSON POST عاديًا في لغتك المستهدفة. تعامل مع شكل الاستجابة ({ data, errors }) كما تفعل في أي عميل GraphQL.
هل يمكنني لصق curl مُصدَّر من Postman؟
نعم. تصدير Postman عبر *Code → cURL* مدعوم بالكامل، بما في ذلك تنسيق \ متعدّد الأسطر. وكذلك curl الناتج من خاصية *Copy as cURL* في أدوات مطوّري Chrome وFirefox.
fetch مقابل axios — أي إخراج أختار؟
استخدم fetch إذا كان مشروعك يستخدمه أصلًا (فهو متوفّر في المتصفحات وNode الحديث). استخدم axios إذا احتجت إلى تحليل JSON تلقائيًا، أو interceptors للطلبات، أو إعادة المحاولات، أو أحداث التقدّم — وهي مزايا لا توفّرها fetch جاهزة.

اعرف المزيد

أدوات مطورين أخرى

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن