将 curl 转换为 Go
使用标准 net/http 包将 curl 命令转换为 Go 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——您的数据保持私密。如果您更喜欢更高级的语言,请尝试我们的 curl 转 Python 转换器。对于系统编程,请参阅 curl 转 Rust。下方是即插即用的 Go 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 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) 请求头。对于 Basic 认证,使用 req.SetBasicAuth(user, pass),它会自动设置请求头。curl2code 会检测 -u 和 -H 'Authorization: ...' 并生成正确的 Go 代码。
如何在 Go 中发送多部分表单数据?
使用 mime/multipart 包:使用 multipart.NewWriter(body) 创建一个 writer,使用 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 请求?
使用 goroutine 配合 sync.WaitGroup 或 channel。使用 go func() { ... }() 在 goroutine 中启动每个请求。对于有界并发,使用信号量 channel。Go 的 goroutine 非常轻量——你可以轻松处理数千个并发请求。关于类似的并发模式,请参阅 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。