تبدیل curl به JavaScript

curl2code دستورات curl را با استفاده از API بومی fetch به کد JavaScript تبدیل می‌کند. همه چیز برای حفظ حریم خصوصی کامل، به صورت محلی در مرورگر شما از طریق WebAssembly اجرا می‌شود. اگر به کد Node.js سمت سرور نیاز دارید، مبدل curl به Node.js ما را امتحان کنید. برای ایمنی نوع (type safety)، مبدل curl به TypeScript را بررسی کنید. در ادامه مثال‌های کاربردی برای الگوهای رایج HTTP آورده شده است.

نحوه کپی کردن curl از مرورگر

  1. 1

    باز کردن DevTools

    کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعه‌دهنده مرورگر باز شوند.

  2. 2

    رفتن به تب Network

    روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP می‌شود را انجام دهید.

  3. 3

    کپی به عنوان cURL

    روی درخواست راست‌کلیک کنید ← CopyCopy as cURL. سپس آن را در بالا جایگذاری کنید.

سوالات متداول

Fetch API چیست؟

رابط Fetch API یک رابط مدرن و مبتنی بر Promise است که در تمام مرورگرها برای ارسال درخواست‌های HTTP تعبیه شده است. این رابط جایگزین XMLHttpRequest قدیمی با یک API تمیزتر و قدرتمندتر شده است. Fetch از استریمینگ، اشیاء request/response، CORS پشتیبانی کرده و به طور طبیعی با async/await ادغام می‌شود. نیازی به نصب ندارد — به صورت سراسری در دسترس است. curl2code از Fetch به عنوان خروجی پیش‌فرض برای تبدیل‌های JavaScript استفاده می‌کند.

Fetch در مقابل XMLHttpRequest در مقابل jQuery.ajax — از کدام استفاده کنم؟

Fetch استاندارد مدرن است — برای پروژه‌های جدید از آن استفاده کنید. XMLHttpRequest قدیمی است اما هنوز در همه جا کار می‌کند و از رویدادهای پیشرفت (progress events) به صورت بومی پشتیبانی می‌کند. jQuery.ajax اگر jQuery قبلاً در پروژه شما باشد، راحتی بیشتری اضافه می‌کند. برای JavaScript سمت سرور، مبدل curl به Node.js ما را ببینید. برای امنیت نوع (type safety)، curl به TypeScript را امتحان کنید.

چگونه احراز هویت را با Fetch مدیریت کنیم؟

یک هدر Authorization در گزینه headers پاس دهید: fetch(url, { headers: { "Authorization": "Bearer token" } }). برای Basic auth، اعتبارنامه‌ها را با btoa(user + ':' + pass) انکود کنید. curl2code فلگ‌های -u و -H 'Authorization: ...' را به طور خودکار تشخیص می‌دهد.

چگونه داده‌های فرم چندبخشی را با Fetch ارسال کنیم؟

یک شیء FormData ایجاد کرده و آن را به عنوان body پاس دهید: fetch(url, { method: "POST", body: formData }). Content-Type را به صورت دستی تنظیم نکنید — مرورگر مرز (boundary) چندبخشی را به طور خودکار اضافه می‌کند. curl2code فلگ‌های -F را به FormData تبدیل می‌کند.

چگونه خطاها را با Fetch مدیریت کنیم؟

Fetch فقط در صورت شکست شبکه ریجکت می‌شود، نه خطاهای HTTP. همیشه قبل از خواندن بدنه، response.ok یا response.status را چک کنید. فراخوانی‌ها را در try/catch با async/await قرار دهید تا هم خطاهای شبکه و هم خطاهای پارس کردن را در یک جا مدیریت کنید.

چگونه از async/await با Fetch استفاده کنیم؟

متد Fetch یک Promise برمی‌گرداند، بنابراین از const response = await fetch(url) و به دنبال آن const data = await response.json() استفاده کنید. برای مدیریت خطا آن را در یک بلوک try/catch قرار دهید. این روش تمیزتر از زنجیره‌های .then() است و الگوی توصیه شده برای JavaScript مدرن می‌باشد.

چگونه برای درخواست‌های Fetch مهلت زمانی تنظیم کنیم؟

از AbortController استفاده کنید: یک کنترلر ایجاد کنید، { signal: controller.signal } را به fetch پاس دهید و controller.abort() را بعد از یک تاخیر با setTimeout فراخوانی کنید. مرورگرهای مدرن همچنین از AbortSignal.timeout(5000) به عنوان یک راهکار تک‌خطی ساده‌تر پشتیبانی می‌کنند. فلگ --max-time در curl به این الگو نگاشت می‌شود.

چگونه مسائل CORS را با Fetch مدیریت کنیم؟

مسئله CORS توسط مرورگر اعمال می‌شود، نه توسط خود Fetch. mode: 'cors' (پیش‌فرض) را تنظیم کنید و مطمئن شوید سرور هدرهای Access-Control-Allow-Origin مناسب را ارسال می‌کند. برای اعتبارنامه‌ها (کوکی‌ها)، credentials: 'include' را اضافه کنید. CORS برای کد سمت سرور اعمال نمی‌شود — برای آن، مبدل curl به Node.js ما را ببینید.

چگونه یک درخواست POST با بدنه JSON در JavaScript ارسال کنیم؟

یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به JavaScript تبدیل کنید. کد تولید شده از fetch(url, { method: 'POST', body: JSON.stringify(data), headers: {'Content-Type': 'application/json'} }) استفاده می‌کند. curl2code به طور خودکار فلگ‌های -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد fetch تنظیم می‌کند.

چگونه احراز هویت با Bearer token را در JavaScript اضافه کنیم؟

دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد fetch را با هدر احراز هویت تولید کند: headers: { 'Authorization': 'Bearer YOUR_TOKEN' }. curl2code توکن‌های Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص می‌دهد. برای Basic auth، از -u user:pass استفاده کنید.

چگونه هدر Content-Type را در JavaScript تنظیم کنیم؟

curl2code دستور curl -H "Content-Type: application/json" URL را به کد fetch با هدر مناسب تبدیل می‌کند: headers: { 'Content-Type': 'application/json' }. برای داده‌های -d، دستور curl به طور پیش‌فرض از application/x-www-form-urlencoded استفاده می‌کند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده می‌کند. curl2code هر کدام را به API صحیح fetch نگاشت می‌کند.

لینک‌های مفید

راهنماهای curl

تبدیل curl به زبان‌های دیگر