نحوه استفاده
- یک درخواست را بهصورت cURL کپی کنید؛ مثلاً از ابزارهای توسعهدهنده مرورگر (برگه Network، کلیک راست، Copy as cURL) یا از مستندات API.
- آن را در کادر قرار دهید. ادامه خط با \ مشکلی ندارد.
- JavaScript fetch، Node.js axios، Python requests یا PHP cURL را انتخاب کنید.
- یادداشتهای زیر کد را بخوانید، سپس نتیجه را کپی یا دانلود کنید.
نحوه کار
مبدل ابتدا فرمان را همانگونه که یک پوستهٔ POSIX انجام میدهد به واژهها تقسیم میکند: نقلقولهای تکی، نقلقولهای دوتایی با نویسههای فرار بکاسلش، رشتههای $'…' و ادامهٔ خط با بکاسلش درک میشوند. متغیرهای پوسته مانند $TOKEN بسط داده نمیشوند و بهصورت متن باقی میمانند.
گزینههای پشتیبانیشدهٔ curl: URL (یا --url)، -X/--request، -H/--header، -d/--data، --data-ascii، --data-raw، --data-binary، --data-urlencode، --json، -F/--form و --form-string (فیلدها و آپلودهای @file همراه با ;type=)، -u/--user، -G/--get، -I/--head، -A/--user-agent، -e/--referer، -b/--cookie (رشتههای کوکی)، -L/--location و --compressed. گزینههای کوتاه میتوانند ترکیب شوند، مانند -sSL، و مقادیر میتوانند متصل شوند، مانند -XPOST.
قوانین از curl پیروی میکنند: چندین مقدار -d با & به هم متصل میشوند؛ داده درخواست را به POST تبدیل میکند مگر اینکه -X یا -G خلاف آن را بگوید؛ -G دادهها را بهصورت رشتهٔ کوئری به URL اضافه میکند؛ --json هدرهای Content-Type و Accept را روی application/json تنظیم میکند. وقتی بدنه JSON است و Content-Type همین را نشان میدهد، کد بهجای یک رشتهٔ فرارشده یک شیء واقعی ارسال میکند (json= در پایتون، آرایهای با json_encode در PHP). برای فرمهای multipart، هدر Content-Type به کتابخانه واگذار میشود تا مرز صحیح باشد.
-k/--insecure عمداً نادیده گرفته میشود و یک یادداشت آن را توضیح میدهد. گزینههایی که فقط خروجی خود curl را تغییر میدهند (-s، -S، -v، -i، -o، --fail و موارد مشابه) همراه با یادداشت نادیده گرفته میشوند. هر گزینهٔ دیگر خطای واضحی با ذکر نام آن ایجاد میکند، نه کدی که بیسروصدا کار متفاوتی انجام دهد. یک تفاوت باقی میماند: curl فقط با -L تغییرمسیرها را دنبال میکند، در حالی که fetch ،axios و requests بهطور پیشفرض آنها را دنبال میکنند؛ کد PHP نیز فقط وقتی -L داده شده باشد آنها را دنبال میکند.
این ابزار فقط کد مینویسد. هرگز درخواست را ارسال نمیکند، بنابراین توکنها و گذرواژههای موجود در فرمان هیچجا استفاده نمیشوند.
نمونهها
بازتولید درخواست مرورگر در پایتون
یک فراخوانی API ناموفق را از تب Network کروم بهصورت cURL کپی کنید و آن را به requests پایتون تبدیل کنید. هدرها، کوکیها و بدنهٔ JSON منتقل میشوند، بنابراین میتوانید باگ را در یک اسکریپت بازتولید کنید.
استفاده از مستندات API در Node.js
یک مرجع API نشان میدهد: «curl -u key: https://api.example.com/v1/charges -d amount=2000 -d currency=eur». نسخهٔ axios از auth: { username: "key", password: "" } و بدنهٔ فرم-انکدشده استفاده میکند.
بارگذاری فایل در PHP
«curl -F 'file=@invoice.pdf;type=application/pdf' -F 'note=March' https://x.io/upload» به CURLOPT_POSTFIELDS با new CURLFile('invoice.pdf', 'application/pdf') و فیلد note تبدیل میشود.
پرسشهای متداول
آیا این ابزار درخواست مرا ارسال میکند؟
خیر. این ابزار فقط متن دستور را تجزیه میکند و کد تولید میکند. هیچ درخواستی ارسال نمیشود؛ بنابراین کلیدهای API یا کوکیهای موجود در دستور استفاده یا ذخیره نمیشوند.
چرا -k/--insecure تبدیل نمیشود؟
غیرفعال کردن بررسی گواهی، اتصال را در برابر شنود آسیبپذیر میکند. کد تولیدشده بررسیها را فعال نگه میدارد؛ اگر گواهی سرور معتبر نیست، بهجای آن گواهی یا مخزن اعتماد را اصلاح کنید.
چرا پیام «گزینه پشتیبانی نمیشود» را میبینم؟
مبدل فقط گزینههایی را تبدیل میکند که بتواند معنای آنها را دقیقاً بازتولید کند. پروکسیها، گواهیهای کلاینت، cookie jar و گزینههای مشابه رد میشوند تا کدی دریافت نکنید که رفتاری متفاوت از cURL داشته باشد.
آیا با دستورهای Windows cmd کار میکند؟
دستورهایی که بهصورت «cURL (bash)» کپی شدهاند بهترین کارایی را دارند. Windows cmd از ^ برای ادامه خط و نقلقولگذاری متفاوت استفاده میکند؛ ^ در پایان خط پذیرفته میشود، اما سایر نویسههای گریز cmd ممکن است پذیرفته نشوند.
حریم خصوصی
دستور فقط در مرورگر شما تجزیه میشود و هیچ درخواستی ارسال نمیشود. هیچ چیزی بارگذاری، ذخیره یا در تحلیلها گنجانده نمیشود.