Golang Go语言中问卷调查:如果实现解析 curl 命令的库,大家感兴趣吗?

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

Golang Go语言中问卷调查:如果实现解析 curl 命令的库,大家感兴趣吗?

问卷调查

github 没有解析 curl 命令的库,再加上目前的知识储备实现这个库问题不大(熟悉 curl 命令选项 && go 的 http 客户端 && gnu 命令风格)。想知道如果对这个库感兴趣的童鞋多的话,4 月 1 号就开撸第一个版本。

伪代码

req, err := pcurl.ParseAndRequest(`curl -X POST -d '{"hello":"val")'`)
resp, err := http.DefaultClient.Do(req)

项目后面存放位置(现在还没开始)

https://github.com/antlabs/pcurl


更多关于Golang Go语言中问卷调查:如果实现解析 curl 命令的库,大家感兴趣吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

49 回复

搜罗一下,没找到做这个事的 pkg,做吧,有市场!

更多关于Golang Go语言中问卷调查:如果实现解析 curl 命令的库,大家感兴趣吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


如果能支持多线程, 多任务下载, 像 aria2 那样, 很感兴趣

好像…没什么用啊,httpie 不是更友好么

用 py 搞过 chrome 导出的 curl 转 requests args dict, 算是比较有用的吧, 关键信息转 JSON, 标准化+持久化, 平时抓包拿个 curl 一句不改就在代码里存了请求 meta, 还是挺好用的, golang 这边没找到类似的

谢谢,刚刚看过了。https://mholt.github.io/curl-to-go/ 解析 curl multipart 格式有问题。
可以用下面的命令 curl -F text=good -F voice=good.pcm www.qq.com 试下就知道。

为什么不做转换代码的工作呢,感觉这样写起来并没有什么用处呀。

是指看到 curl 命令之后,直接用代码撸类似请求?

chrome 的 curl 复制出来可以导入到 postman ( postman 导出无法导入回去)

比起这个我对如何使用 libcurl c/c++那个库实现多任务处理更感兴趣,哈哈哈,搜了好久没收到相关的例子,比如主线程往一个队列里插入任务,子线程比如最大并发 10 个任务同时处理,处理完一个再从任务里添加一个,我现在实现的比较挫,只能 10 个全部处理完再加 10 个,select 那啥的玩的不 6

#7 的想法可能有点用处,大概的场景:
从 chrome network 里复制出 curl 的命令,贴进 terminal 里。把 curl 命令改为 curl2go,回车后转换出 golang 的使用其自带标准库的代码,使用时无第三方依赖

而且感觉实现起来也简单些,直接用 flag 解析传进来的参数就好了

解析 curl 命令的库……我想了一下,这不是应该直接从 curl 的源码里面把代码抠出来就行么?
再想了一下,哦,你们不是写 c/c++的……

再看了一下最上面,哦,原来是 go 栏目,我走错门了……

没懂 ‘把 curl 命令改为 curl2go’ 这句是怎么实施的。

用 go 做 libcurl 的 wrapper

一般都有动态参数,用这个怎么搞?
直接生成对应语言的代码倒还行

libcurl 包装会丢掉 go 强大的交叉编译能力,go 的代码很容易跑在 mac, linux, windows, freebsd 上。
引入 gcc/g++就头疼了。

一般都有动态参数,如何理解?

一般都有动态参数,如何理解?

你可以先做 wrapper 再慢慢把底层替换, 先把功能实现, 要不容易弃坑.

把光标移到命令最开头……

我觉得如果有一个可以通过 curl 命令生成相同功能的 go 代码的 cli 会很有用。

尝试过类似工具,但似乎制作者或是不太熟悉 go 的 http 的客户端,或是功能太简单无法覆盖 curl 那五花八门的选项。

其实想问怎么把 curl 命令转成 go 的代码?是指每遇到一种 curl 命令就手写完成同样请求的 go 代码?

这个问题也想过,如果想覆盖 curl 那五花八门的选项。使用生成代码的方式很难做完善。可组合情况太多。。。

curl 不同平台参数不一致,而且没有这个需求啊。

httpie 一直不习惯,所以我还是用 Curl 比较多。Windows 下自带不行,有很多问题,所以现在也安装了 Cygwin。

谢谢啦,刚刚看了源代码,这个项目实现的 curl 选项也就 1,2 个,完整的 curl 选项应该是 175 个。这还不算-d 选项目后面还可以跟五花八门的配置项。
最后 curlie 和 4 月 1 日要写的 pcurl 不矛盾,curlie 是命令行工具,pcurl 是库。简单地说 pcurl 可以实现 curlie,反过来不行。

为什么要先写成 curl 命令再解析出来啊?我没这需求。

因果关系是,是先有 curl 的命令(别人提供的),想快速用 go 发射出去。

#24 这句说得我有点混乱了,看你举例的代码不就是要解析 curl 命令行的吗……

直接用 http 库重写一下这个 curl 请求不就行了?= =|||

对啊,是要用 go 解析 curl 命令的。
我们在讨论实现的细节有个分歧。
你是想用解析 curl---->生成 go 代码的方式。在#24 表达这种方式不太好实现。
目前倾向于使用 解析 curl---->生成*http.Request

现在不混乱了吧。

曾经有计划做一个 curl->php->php curl 发送完整 curl 命令到 php 转换并请求 再带着返回头和内容(如果有)发回来的 proxy
后来发现最多也就是填几个会用到的 放虚拟主机上简单用用还是蛮方便的

对于你的疑问,换种说话,标准库可以做很多事情。为啥还有这么多的库会出现补充它,不是说标准库不够好,而是做一件事太慢(非运行时,而是编码慢)。
你说的可以用标准库做,试想下下面的命令要你用 http 库最快要多长时间翻译成 go 代码。
bash<br>curl -X POST url -d 'username=yourusername&amp;password=yourpassword'<br>curl --request PUT url<br>curl -r 0-20000 -o myfile.png url<br>curl -F text=good -F voice=./good.voice url<br>
如果不在乎编码慢,我也不知道说啥了。如果在乎还有一例。

举个远古的例子(快与慢),c 语言为啥什么会代替汇编。大部分原因汇编相比 c 来说编码来说太慢。写个 i++,可能要从栈里移动到寄存器里,用 add 完成自加,mov 再移回去,一个简单的 i++都要撸这么多,试想 for 循环或者写一个函数,这谁吃得消,对吧。历史说过,快的不一定能完全替换慢的,但是快的大多数会流行。

最后想说:天下武功唯快不破。。。

同道中人。我后面想玩个大的,实现大部分 curl 选项。

httpie 是很香,只是受众比 curl 略低。

vs code 有一个 REST Client 扩展,可以直接解析和运行 curl,还可以生成各种语音的代码。

这个插件名字是?我看下有没有 go 的。如果能实现百分百 curl 选项,我就玩别的。

所以你就是想用 Go 把 curl 实现一遍???

只实现一个解析库然后生成 go 的*http.Request 对象,然后给别的有此需求的童鞋用下。想加入吗?

网上一搜一大把,curl 命令转 Python 的 requests 实现,都不用写代码,直接生成给你

有 go 的吗?

谢谢了,刚刚确认过,支持 multipart 格式有问题。
可以用下面的命令 curl -F text=good -F voice=good.pcm url 试下就知道。



我刚刚看了你的几个 repo。

首先说肯定有价值,现在安卓手机上默认是没有 curl 的,curl 要编译要解决各种依赖链和 ssl 的问题,go 的交叉编译能完美解决这个问题。

感谢支持。

对于Golang中实现解析curl命令的库,这一提议确实值得探讨和关注。以下是我作为IT营GO语言方面专家的一些看法:

首先,curl是一个非常强大的命令行工具,用于发起HTTP请求。在Go语言中,实现一个能够解析并执行curl命令的库,将极大地方便开发者在Go程序中集成HTTP请求功能。

其次,这样的库可以提供简单易用的API,让开发者能够轻松地构建、发送HTTP请求,并处理响应数据。这对于需要频繁与Web服务器进行通信的应用程序来说,无疑是一个巨大的助力。

再者,考虑到curl命令的丰富性和复杂性,实现一个全面支持curl命令解析的库需要投入大量的时间和精力。但一旦完成,这样的库将具有极高的实用价值,能够广泛应用于爬虫、API调用、Web自动化测试等场景。

综上所述,我认为实现一个解析curl命令的Go语言库是一个非常有价值的项目。它不仅能够提升开发效率,还能够促进Go语言在Web开发领域的应用和发展。因此,我对这一提议表示浓厚的兴趣和支持。

回到顶部