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 中时,用它正合适。转换发生在你的浏览器中,因此命令及其中的任何令牌都在你的设备上本地处理,绝不会离开它。

功能特性

如何使用 curl 转 Go

  1. 将你的 curl 命令粘贴到 cURL 命令框中。
  2. 在输出面板中查看生成的 Go net/http 程序。
  3. 查看警告横幅,了解被调整或跳过的标志。
  4. 点击「复制」,或将文件下载为 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 导入。

常见错误与故障排除

常见问题

如何将 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 工具