Golang Go语言中首发,可以在Go解析curl啦

发布于 1周前 作者 h691938207 来自 Go语言

Golang Go语言中首发,可以在Go解析curl啦

Go codecov

项目出发点

前段问过诸位 v 友,go 里面有否有库可以解析 curl,经过求证 可以同时支持 FormData 和 body 的确实没有。好吧,所以有了 pcurl,正好填充 go 的一块空白领域。

pcurl 简介

pcurl 可以把 curl 的命令解析成*http.Request,无论是标准库粉还是 gout 粉都可以使用,这里平等对待。

未来计划(诗和远方)

  • 可以完全解析 curl 的 http 子集

项目地址

https://github.com/antlabs/pcurl

快速开始

package main

import ( “fmt” “github.com/antlabs/pcurl” “io” “net/http” “os” )

func main() { req, err := pcurl.ParseAndRequest(curl -XPOST -d '{"hello":"world"}' 127.0.0.1:1234) if err != nil { fmt.Printf(“err:%s\n”, err) return }

resp, err := http.DefaultClient.Do(req)
if err != nil {
    fmt.Printf("err:%s\n", err)
    return
}   
defer resp.Body.Close()

io.Copy(os.Stdout, resp.Body)

}


更多关于Golang Go语言中首发,可以在Go解析curl啦的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

22 回复

资瓷

更多关于Golang Go语言中首发,可以在Go解析curl啦的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


前排提个小问题,multi-part 能支持吗?

可以,请看第三个例子。

当然要资瓷一波

感谢支持。。。

资瓷 资瓷

感谢感谢。。。

感谢支持。。。

我不明白这么用和直接发 get post 有啥好处

直接 get post 是推荐的用法,有 curl 命令资产才推荐用 pcurl,现在明白了吧。

不错, 这样调用网上的 rest api 方便多了,直接复制过来就能基本能用

感谢支持。。。

好评 楼主怎么想到的。。。。

感谢支持。。。

我有个习惯,开发过程中哪个点不爽,会记录下来。这些个痛点就是灵感的来源。。。

在Go语言中实现解析和处理curl命令的功能确实是一个有趣且实用的项目。curl作为一种广泛使用的命令行工具,用于发送HTTP请求,能够生成各种请求格式的示例。在Go中解析curl命令,可以帮助开发者更便捷地将这些命令转化为Go代码中的HTTP请求。

要实现这一目标,你需要解析curl命令的字符串表示,提取出URL、请求方法(GET、POST等)、请求头(Headers)、请求体(Body)等关键信息。Go的标准库net/http提供了构建HTTP请求和发送请求的强大功能,你可以利用这个库来构造和发送解析后的请求。

一个基本的实现思路是:

  1. 使用正则表达式或字符串处理函数解析curl命令字符串,提取出各个部分。
  2. 根据提取的信息,使用net/http.NewRequest函数创建一个新的HTTP请求对象。
  3. 使用http.ClientDo方法发送请求,并处理响应。

此外,你还可以考虑实现一些高级功能,比如支持curl的所有选项和参数、处理重定向、设置超时等。这些功能可能需要更复杂的解析逻辑和更精细的错误处理。

总的来说,这个项目不仅能够提高你对Go语言和网络编程的理解,还能让你拥有一个实用的工具,将curl命令方便地转化为Go代码中的HTTP请求。希望这个思路能帮助你开始这个项目!

回到顶部