將 curl 轉換為 Go
使用標準 net/http 套件將 curl 指令轉換為 Go 程式碼。curl2code 完全透過 WebAssembly 在您的瀏覽器中執行 —— 您的資料將保持私密。如果您偏好高階語言,請嘗試我們的 curl 轉 Python 轉換器。若需系統程式設計,請參閱 curl 轉 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 vs 第三方 Go HTTP 客戶端 — 應該使用哪一個?
Go 的 net/http 對於大多數使用案例來說已經足夠強大 — 與許多語言不同,其標準函式庫已具備生產就緒能力。像 resty 這樣的第三方選項增加了便利性(自動重試、鏈結呼叫),但會增加依賴。關於類似的「內建功能齊全」方法,請參閱我們的 curl 轉 Rust 轉換器 (reqwest) 或 curl 轉 Python。
如何在 Go 中處理身份驗證?
使用 Authorization 設定 req.Header.Set("Authorization", "Bearer "+token) 標頭。對於基本驗證,使用 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)。然後檢查 resp.StatusCode 以確認 HTTP 層級的錯誤。務必使用 defer resp.Body.Close() 以防止資源洩漏。這種顯式錯誤處理是 Go 的核心模式 — 沒有異常,沒有 try/catch。
如何在 Go 中發送併發 HTTP 請求?
搭配 sync.WaitGroup 或通道(channels)使用 goroutines。使用 go func() { ... }() 在 goroutine 中啟動每個請求。對於受限的併發,請使用信號量(semaphore)通道。Go 的 goroutines 非常輕量 — 您可以輕鬆處理數千個併發請求。關於類似的併發模式,請參閱 curl 轉 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 權杖授權?
將 curl -H "Authorization: Bearer YOUR_TOKEN" URL 傳遞給 curl2code,它會生成帶有授權標頭的 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。