curl کو Go میں تبدیل کریں
اسٹینڈرڈ net/http پیکیج کا استعمال کرتے ہوئے curl کمانڈز کو Go کوڈ میں تبدیل کریں۔ curl2code مکمل طور پر WebAssembly کے ذریعے آپ کے براؤزر میں چلتا ہے — آپ کا ڈیٹا نجی رہتا ہے۔ اگر آپ ہائر لیول لینگویج کو ترجیح دیتے ہیں، تو ہمارا curl to Python کنورٹر آزمائیں۔ سسٹم پروگرامنگ کے لیے، curl to Rust دیکھیں۔ نیچے استعمال کے لیے تیار Go مثالیں دی گئی ہیں۔
اپنے براؤزر سے curl کاپی کرنے کا طریقہ
- 1
DevTools کھولیں
اپنے براؤزر کے ڈویلپر ٹولز کھولنے کے لیے F12 یا Ctrl+Shift+I دبائیں۔
- 2
Network ٹیب پر جائیں
Network ٹیب پر کلک کریں اور وہ عمل کریں جو HTTP درخواست کو متحرک کرتا ہے۔
- 3
cURL کے طور پر کاپی کریں
درخواست پر رائٹ کلک کریں ← Copy ← Copy as cURL۔ پھر اسے اوپر پیسٹ کریں۔
اکثر پوچھے جانے والے سوالات
Go net/http کیا ہے؟
Go کا net/http ایک پروڈکشن گریڈ HTTP کلائنٹ اور سرور ہے جو اسٹینڈرڈ لائبریری میں شامل ہے۔ اسے کسی بیرونی ڈیپینڈینسی کی ضرورت نہیں ہے، یہ ڈیفالٹ طور پر HTTP/2 کو سپورٹ کرتا ہے، اور کنکشن پولنگ، ٹائم آؤٹ، اور TLS کنفیگریشن فراہم کرتا ہے۔ یہ واحد لائبریری ہے جسے curl2code، Go کے لیے استعمال کرتا ہے — کسی تھرڈ پارٹی پیکیج کی ضرورت نہیں ہے۔
net/http بمقابلہ تھرڈ پارٹی Go HTTP کلائنٹس — کون سا استعمال کریں؟
Go کا net/http زیادہ تر استعمال کے لیے کافی طاقتور ہے — بہت سی زبانوں کے برعکس، اس کی اسٹینڈرڈ لائبریری پروڈکشن کے لیے تیار ہے۔ تھرڈ پارٹی آپشنز جیسے resty سہولت (خودکار ریٹرائز، چیننگ) شامل کرتے ہیں لیکن ڈیپینڈینسیز بڑھاتے ہیں۔ اسی طرح کے 'بیٹریز انکلوڈڈ' نقطہ نظر کے لیے، ہمارا curl to Rust converter (reqwest) یا curl to Python دیکھیں۔
Go میں توثیق (authentication) کو کیسے سنبھالا جائے؟
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 فلیگ کی تبدیلیوں کو سنبھالتا ہے۔
Go میں HTTP غلطیوں کو کیسے سنبھالا جائے؟
Go واضح ایرر ریٹرنز کا استعمال کرتا ہے: if err != nil کے بعد ہمیشہ http.Do(req) چیک کریں۔ پھر HTTP لیول کی غلطیوں کے لیے resp.StatusCode چیک کریں۔ وسائل کے رساو (resource leaks) کو روکنے کے لیے ہمیشہ defer resp.Body.Close() کریں۔ یہ واضح ایرر ہینڈلنگ Go کا بنیادی پیٹرن ہے — کوئی استثنیٰ (exceptions) نہیں، کوئی try/catch نہیں۔
Go میں کنکرنٹ (concurrent) HTTP درخواستیں کیسے کی جائیں؟
sync.WaitGroup یا چینلز کے ساتھ goroutines استعمال کریں۔ ہر درخواست کو go func() { ... }() کے ساتھ ایک goroutine میں لانچ کریں۔ محدود کنکرنسی کے لیے، سیمافور چینل استعمال کریں۔ Go کی goroutines ہلکی پھلکی ہیں — آپ آسانی سے ہزاروں کنکرنٹ درخواستوں کو سنبھال سکتے ہیں۔ اسی طرح کے کنکرنسی پیٹرنز کے لیے، curl to Rust دیکھیں۔
Go HTTP کلائنٹ میں ٹائم آؤٹ کیسے سیٹ کریں؟
مجموعی درخواست کی ڈیڈ لائن کے لیے client.Timeout سیٹ کریں۔ باریک بینی سے کنٹرول کے لیے، context.WithTimeout یا context.WithDeadline استعمال کریں اور سیاق و سباق (context) کو http.NewRequestWithContext میں پاس کریں۔ curl کا --connect-timeout، 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 پراکسی کنفیگریشن میں تبدیل کرتا ہے۔
Go میں JSON باڈی کے ساتھ POST درخواست کیسے بھیجیں؟
curl2code کا استعمال کرتے ہوئے curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL جیسی curl POST کمانڈ کو Go میں تبدیل کریں۔ تیار کردہ کوڈ http.Post(url, "application/json", bytes.NewBuffer(jsonData)) استعمال کرتا ہے۔ curl2code خودکار طور پر JSON مواد کے ساتھ -d/--data فلیگز کا پتہ لگاتا ہے اور net/http کوڈ میں مناسب Content-Type ہیڈر سیٹ کرتا ہے۔
Go میں Bearer ٹوکن کی اجازت کیسے شامل کریں؟
curl2code کو curl -H "Authorization: Bearer YOUR_TOKEN" URL فراہم کریں اور یہ auth ہیڈر کے ساتھ net/http کوڈ تیار کرتا ہے: req.Header.Set("Authorization", "Bearer YOUR_TOKEN")۔ curl2code دونوں -H "Authorization: Bearer ..." اور --oauth2-bearer فلیگز سے Bearer ٹوکنز کا پتہ لگاتا ہے۔ Basic auth کے لیے، -u user:pass استعمال کریں۔
Go میں Content-Type ہیڈر کیسے سیٹ کریں؟
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 ہر ایک کو درست net/http API کے ساتھ میپ کرتا ہے۔