تبدیل curl به Go

دستورات curl را با استفاده از پکیج استاندارد net/http به کد Go تبدیل کنید. curl2code کاملاً در مرورگر شما از طریق WebAssembly اجرا می‌شود — داده‌های شما خصوصی می‌مانند. اگر زبان سطح بالاتری را ترجیح می‌دهید، مبدل curl به Python ما را امتحان کنید. برای برنامه‌نویسی سیستم، curl به Rust را ببینید. در ادامه مثال‌های آماده Go آورده شده است.

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

  1. 1

    باز کردن DevTools

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

  2. 2

    رفتن به تب Network

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

  3. 3

    کپی به عنوان cURL

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

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

Go net/http چیست؟

پکیج net/http در Go یک کلاینت و سرور HTTP در سطح تولید است که در کتابخانه استاندارد گنجانده شده است. این پکیج به هیچ وابستگی خارجی نیاز ندارد، به طور پیش‌فرض از HTTP/2 پشتیبانی می‌کند و استخر اتصالات، مهلت‌های زمانی و پیکربندی TLS را به صورت آماده فراهم می‌کند. این تنها کتابخانه‌ای است که curl2code برای Go استفاده می‌کند — هیچ پکیج شخص ثالثی نیاز نیست.

net/http در مقابل کلاینت‌های HTTP شخص ثالث Go — از کدام استفاده کنیم؟

پکیج net/http در Go برای اکثر موارد به اندازه کافی قدرتمند است — برخلاف بسیاری از زبان‌ها، کتابخانه استاندارد آن آماده استفاده در محیط تولید است. گزینه‌های شخص ثالث مانند resty راحتی بیشتری (تلاش مجدد خودکار، زنجیره‌سازی) اضافه می‌کنند اما وابستگی ایجاد می‌کنند. برای رویکرد مشابه "همه چیز گنجانده شده"، مبدل curl به Rust (reqwest) یا curl به Python ما را ببینید.

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

هدر Authorization را با req.Header.Set("Authorization", "Bearer "+token) تنظیم کنید. برای Basic auth، از req.SetBasicAuth(user, pass) استفاده کنید که هدر را به طور خودکار تنظیم می‌کند. curl2code فلگ‌های -u و -H 'Authorization: ...' را تشخیص داده و کد صحیح Go را تولید می‌کند.

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

از پکیج mime/multipart استفاده کنید: یک رایتر با multipart.NewWriter(body) ایجاد کنید، فیلدها را با CreateFormField و فایل‌ها را با CreateFormFile اضافه کنید. Content-Type را روی writer.FormDataContentType() تنظیم کنید. curl2code تمام تبدیل‌های فلگ -F را مدیریت می‌کند.

چگونه خطاهای HTTP را در Go مدیریت کنیم؟

زبان Go از بازگشت صریح خطا استفاده می‌کند: همیشه بعد از if err != nil عبارت http.Do(req) را چک کنید. سپس resp.StatusCode را برای خطاهای سطح HTTP بررسی کنید. همیشه برای جلوگیری از نشت منابع از defer resp.Body.Close() استفاده کنید. این مدیریت صریح خطا یک الگوی اصلی در Go است — بدون استثنا (exception) و بدون try/catch.

چگونه درخواست‌های HTTP همزمان در Go ارسال کنیم؟

از goroutineها با sync.WaitGroup یا کانال‌ها استفاده کنید. هر درخواست را در یک goroutine با go func() { ... }() اجرا کنید. برای همزمانی محدود شده، از یک کانال سمافور استفاده کنید. goroutineهای Go سبک هستند — شما می‌توانید به راحتی هزاران درخواست همزمان را مدیریت کنید. برای الگوهای همزمانی مشابه، curl به Rust را ببینید.

چگونه مهلت زمانی را در کلاینت HTTP در Go تنظیم کنیم؟

مقدار client.Timeout را برای کل مهلت درخواست تنظیم کنید. برای کنترل دقیق‌تر، از context.WithTimeout یا context.WithDeadline استفاده کنید و context را به http.NewRequestWithContext پاس دهید. فلگ --connect-timeout در curl به مهلت زمانی Transport.DialContext و --max-time به client.Timeout نگاشت می‌شود.

چگونه یک پروکسی را در Go پیکربندی کنیم؟

مقدار Transport.Proxy را روی http.ProxyURL(proxyUrl) در یک http.Transport سفارشی تنظیم کنید. Go همچنین به طور پیش‌فرض از طریق HTTP_PROXY از متغیرهای محیطی HTTPS_PROXY و http.ProxyFromEnvironment پیروی می‌کند. curl2code فلگ‌های -x و --proxy را به پیکربندی پروکسی مناسب در Go تبدیل می‌کند.

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

یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL را با استفاده از curl2code به Go تبدیل کنید. کد تولید شده از http.Post(url, "application/json", bytes.NewBuffer(jsonData)) استفاده می‌کند. curl2code به طور خودکار فلگ‌های -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد net/http تنظیم می‌کند.

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

دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد net/http را با هدر احراز هویت تولید کند: req.Header.Set("Authorization", "Bearer YOUR_TOKEN"). curl2code توکن‌های Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص می‌دهد. برای Basic auth، از -u user:pass استفاده کنید.

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

curl2code دستور curl -H "Content-Type: application/json" URL را به کد net/http با هدر مناسب تبدیل می‌کند: req.Header.Set("Content-Type", "application/json"). برای داده‌های -d، دستور curl به طور پیش‌فرض از application/x-www-form-urlencoded استفاده می‌کند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده می‌کند. curl2code هر کدام را به API صحیح net/http نگاشت می‌کند.

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

راهنماهای curl

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