curl 转 Go 转换器
在你的浏览器中即时将 curl 命令转换为 Go net/http 代码。命令留在你的设备上。
你的 curl 命令在浏览器本地转换为 Go,绝不会上传,但请避免将真实的生产令牌或凭据粘贴到任何工具中。
也需要一个 JavaScript 版本?试试 cURL 转 Fetch。
关于 curl 转 Go
这款 curl 转 go 转换器会把 curl 命令改写为使用标准 net/http 包的地道 Go 代码,让你无需手动搭建即可把一个 API 调用直接放进 Go 服务中。作为 curl 转 golang 工具,它会读取 -X、-H、-d、--data-raw、--json、-u、-b 和 -G 等标志,构建一个带正确方法的 http.NewRequest,用 req.Header.Set 设置每个请求头,并将请求体包裹在 strings.NewReader 中。生成的 main() 用 io.ReadAll 读取响应并打印状态,可直接用 go run 编译运行。当你要把一个 curl 测试移植到后端处理器、CLI 或 worker 中时,用它正合适。转换发生在你的浏览器中,因此命令及其中的任何令牌都在你的设备上本地处理,绝不会离开它。
功能特性
- 构建一个 http.NewRequest 调用,方法从 curl 标志推断而来
- 用 req.Header.Set 设置每个 -H/--header 值
- 将请求体包裹在 strings.NewReader 中,仅在需要时才添加 strings 导入
- 用 io.ReadAll 读取响应,并打印 res.Status 和请求体
- 将 -u/--user 映射为 Basic 认证头,并处理 cookie、user-agent 和 referer
- 将 -G/--get 的数据作为查询字符串追加到 URL,并发送 nil 请求体
- 在 NewRequest 和 Do 之后包含基本的错误检查,使代码可编译
- 一键复制结果或将其下载为 request.go
如何使用 curl 转 Go
- 将你的 curl 命令粘贴到 cURL 命令框中。
- 在输出面板中查看生成的 Go net/http 程序。
- 查看警告横幅,了解被调整或跳过的标志。
- 点击「复制」,或将文件下载为 request.go 并用 go run 运行它。
示例
输入
curl https://api.example.com/ping
输出
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.example.com/ping"
req, err := http.NewRequest("GET", url, nil)
if err != nil {
panic(err)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, _ := io.ReadAll(res.Body)
fmt.Println(res.Status)
fmt.Println(string(data))
}
无请求体的 GET 会向 http.NewRequest 传入 nil,并跳过 strings 导入。
常见错误与故障排除
- 编译器报告 imported and not used: "strings" 错误。 — 该导入仅在存在请求体时才会生成。如果你手动移除了请求体,请也删掉 strings 导入。
- 你想要一个带超时的可复用客户端,而不是 http.DefaultClient。 — 把 http.DefaultClient 换成你自己的 &http.Client{Timeout: ...};为保持简短,该代码使用了默认客户端。
- 请求体以原始文本发送,但你的端点需要 JSON。 — Content-Type 头会从 curl 沿用过来。请确保原始命令设置了 JSON 的 Content-Type 或使用了 --json,使该头存在。
常见问题
- 如何将 curl 命令转换为 Go?
- 将 curl 命令粘贴到输入框中,转换器会在右侧呈现一个完整的 Go net/http 程序,你可以复制它或下载为 request.go。
- 生成的 Go 代码使用标准库吗?
- 是的。它仅使用标准库中的 net/http、io、fmt 和 strings,因此运行前无需额外 go get 任何东西。
- 请求体在 Go 中如何表示?
- 请求体被包裹在 strings.NewReader 中并传给 http.NewRequest,且仅在存在请求体时才会自动添加 strings 导入。
- 我能用 go run 直接运行输出吗?
- 可以。转换器会生成一个完整的 package main,带有 main() 函数、基本错误处理和响应打印,因此 go run request.go 可直接运行。
- 我把 curl 转换为 Go 时命令会被发送到服务器吗?
- 不会。curl 转 go 的转换完全在你的浏览器中运行,因此命令及其中的任何密钥都留在你的设备上。
相关工具
全部 ArrayKit 工具