แปลง curl เป็น Go
แปลงคำสั่ง curl เป็นโค้ด Go โดยใช้แพ็กเกจมาตรฐาน net/http curl2code ทำงานในเบราว์เซอร์ของคุณทั้งหมดผ่าน WebAssembly — ข้อมูลของคุณจะยังคงเป็นส่วนตัว หากคุณชอบภาษาในระดับที่สูงกว่า ลองใช้ ตัวแปลง curl เป็น Python ของเรา สำหรับการเขียนโปรแกรมระบบ ดูที่ curl เป็น Rust ด้านล่างนี้คือตัวอย่าง Go ที่พร้อมใช้งาน
วิธีคัดลอก curl จากเบราว์เซอร์ของคุณ
- 1
เปิด DevTools
กด F12 หรือ Ctrl+Shift+I เพื่อเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของเบราว์เซอร์
- 2
ไปที่แท็บ Network
คลิกแท็บ Network และดำเนินการที่ทริกเกอร์คำขอ HTTP
- 3
คัดลอกเป็น cURL
คลิกขวาที่คำขอ → Copy → Copy as cURL จากนั้นนำมาวางด้านบน
คำถามที่พบบ่อย (FAQ)
Go net/http คืออะไร?
net/http ของ Go เป็น HTTP client และ server ระดับโปรดักชันที่รวมอยู่ในไลบรารีมาตรฐาน ไม่ต้องมี dependencies ภายนอก รองรับ HTTP/2 โดยค่าเริ่มต้น และให้บริการ connection pooling, timeouts และการกำหนดค่า TLS ในตัว เป็นไลบรารีเดียวที่ curl2code ใช้สำหรับ Go — ไม่ต้องใช้แพ็กเกจจากบุคคลที่สาม
net/http เทียบกับ Go HTTP clients จากบุคคลที่สาม — ควรใช้อันไหน?
net/http ของ Go ทรงพลังเพียงพอสำหรับกรณีการใช้งานส่วนใหญ่ — ไลบรารีมาตรฐานของ Go พร้อมใช้งานในระดับโปรดักชัน ตัวเลือกจากบุคคลที่สามอย่าง resty ช่วยเพิ่มความสะดวก (การลองใหม่อัตโนมัติ, การเขียนโค้ดแบบต่อเนื่อง) แต่เพิ่ม dependencies สำหรับแนวทางที่เน้นฟีเจอร์ในตัวแบบเดียวกัน โปรดดู ตัวแปลง curl เป็น Rust (reqwest) หรือ ตัวแปลง curl เป็น Python
จะจัดการการยืนยันตัวตนใน Go อย่างไร?
ตั้งค่า header Authorization ด้วย req.Header.Set("Authorization", "Bearer "+token) สำหรับการยืนยันตัวตนแบบ Basic ให้ใช้ req.SetBasicAuth(user, pass) ซึ่งจะตั้งค่า header ให้โดยอัตโนมัติ curl2code จะตรวจจับ -u และ -H 'Authorization: ...' และสร้างโค้ด Go ที่ถูกต้อง
จะส่งข้อมูลฟอร์มแบบ multipart ใน Go อย่างไร?
ใช้แพ็กเกจ mime/multipart: สร้าง writer ด้วย 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 — ไม่มี exceptions และไม่มี try/catch
จะส่ง HTTP requests พร้อมกันหลายรายการใน Go อย่างไร?
ใช้ goroutines ร่วมกับ sync.WaitGroup หรือ channels เริ่มแต่ละ request ใน goroutine ด้วย go func() { ... }() สำหรับการจำกัดจำนวนการทำงานพร้อมกัน ให้ใช้ semaphore channel เนื่องจาก goroutines ของ Go มีน้ำหนักเบา คุณจึงสามารถจัดการ requests พร้อมกันได้หลายพันรายการ สำหรับรูปแบบการทำงานพร้อมกันที่คล้ายกัน โปรดดู curl เป็น Rust
จะตั้งค่า timeouts ใน Go HTTP client อย่างไร?
ตั้งค่า client.Timeout สำหรับกำหนดเวลาโดยรวมของ request สำหรับการควบคุมที่ละเอียดขึ้น ให้ใช้ context.WithTimeout หรือ context.WithDeadline และส่ง context ไปยัง http.NewRequestWithContext โดยแฟล็ก --connect-timeout ของ curl จะถูกจับคู่กับ Transport.DialContext timeout และ --max-time จะถูกจับคู่กับ client.Timeout
จะกำหนดค่า proxy ใน Go อย่างไร?
ตั้งค่า Transport.Proxy เป็น http.ProxyURL(proxyUrl) บน http.Transport ที่กำหนดเอง นอกจากนี้ Go ยังรองรับตัวแปรสภาพแวดล้อม HTTP_PROXY และ HTTPS_PROXY โดยค่าเริ่มต้นผ่าน http.ProxyFromEnvironment โดย curl2code จะแปลงแฟล็ก -x และ --proxy เป็นการกำหนดค่า proxy ของ Go ที่เหมาะสม
วิธีส่งคำขอ POST พร้อม JSON body ใน Go?
แปลงคำสั่ง curl POST เช่น curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL เป็น Go โดยใช้ curl2code โค้ดที่สร้างขึ้นจะใช้ 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 tokens จากทั้งแฟล็ก -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 จะจับคู่แต่ละรายการเข้ากับ net/http API ที่ถูกต้อง