تحويل أمر cURL إلى fetch في JavaScript

انسخ الطلب من أدوات المطور أو من توثيق API والصقه هنا لتحصل على كود fetch يعمل في المتصفح و Node.js 18 وما بعده.

جارٍ تحميل الأداة…

المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.

طريقة الاستخدام

  1. أدخل أمر curl.
  2. تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
  3. انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.

طريقة الحساب

يقسم الأمر كما يفعل bash (علامات مفردة ومزدوجة و $'' و \ آخر السطر)، ثم تقرأ الخيارات -X و -H و -d و --data-raw و --data-binary و --data-urlencode و --json و -F و -u و -A و -e و -b و -G و -I. مع -d تضاف Content-Type: application/x-www-form-urlencoded كما يفعل curl، و -u يصبح ترويسة Basic بترميز Base64.

مثال

النتيجة: كود fetch: const response = await fetch('https://api.example.com/v1/orders', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN' }, body: '{"product":"oud","qty":2}' });، طريقة الطلب: POST، ملاحظات: لا توجد ملاحظات.

curl -X POST 'https://api.example.com/v1/orders' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer TOKEN' \
  -d '{"product":"oud","qty":2}'
const response = await fetch('https://api.example.com/v1/orders', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer TOKEN'
  },
  body: '{"product":"oud","qty":2}'
});

الحدود والملاحظات

  • المتصفح يمنع ترويسات مثل Cookie و Host و Referer في fetch، لكنها تعمل في Node.js.
  • قراءة الملفات @file والمتغيرات $VAR وصيغة cmd في Windows غير مدعومة.
  • curl لا يتبع التحويلات إلا مع -L، بينما يتبعها fetch افتراضيا.

أسئلة شائعة عن هذه الأداة

كيف أنسخ الطلب كأمر curl؟

في تبويب Network انقر بالزر الأيمن على الطلب واختر Copy ثم Copy as cURL (bash).

لماذا أضيفت ترويسة Content-Type لم أكتبها؟

لأن curl يرسل application/x-www-form-urlencoded تلقائيا مع -d بينما يرسل fetch النوع text/plain، فأضفناها ليطابق الطلب ما يرسله curl.

ماذا تعني الملاحظات أسفل الكود؟

تذكر الخيارات التي تجاهلناها لأنها لا تغير الطلب أو ليس لها مقابل في fetch، مثل -o و -k.