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

2020-03-15 09:37:03 +08:00
 guonaihong

问卷调查

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

4880 次点击
所在节点    Go 编程语言
48 条回复
ETiV
2020-03-15 12:06:09 +08:00
把光标移到命令最开头……
0o0O0o0O0o
2020-03-15 12:16:41 +08:00
我觉得如果有一个可以通过 curl 命令生成相同功能的 go 代码的 cli 会很有用。

尝试过类似工具,但似乎制作者或是不太熟悉 go 的 http 的客户端,或是功能太简单无法覆盖 curl 那五花八门的选项。
guonaihong
2020-03-15 12:17:19 +08:00
@ETiV 其实想问怎么把 curl 命令转成 go 的代码?是指每遇到一种 curl 命令就手写完成同样请求的 go 代码?
guonaihong
2020-03-15 12:20:19 +08:00
@0o0O0o0O0o 这个问题也想过,如果想覆盖 curl 那五花八门的选项。使用生成代码的方式很难做完善。可组合情况太多。。。
wentaoliang
2020-03-15 12:49:16 +08:00
curl 不同平台参数不一致,而且没有这个需求啊。
hantsy
2020-03-15 13:24:17 +08:00
@tairan2006 httpie 一直不习惯,所以我还是用 Curl 比较多。Windows 下自带不行,有很多问题,所以现在也安装了 Cygwin。
zthxxx
2020-03-15 16:04:29 +08:00
guonaihong
2020-03-15 16:23:20 +08:00
@zthxxx 谢谢啦,刚刚看了源代码,这个项目实现的 curl 选项也就 1,2 个,完整的 curl 选项应该是 175 个。这还不算-d 选项目后面还可以跟五花八门的配置项。
最后 curlie 和 4 月 1 日要写的 pcurl 不矛盾,curlie 是命令行工具,pcurl 是库。简单地说 pcurl 可以实现 curlie,反过来不行。
ggicci
2020-03-15 16:55:24 +08:00
为什么要先写成 curl 命令再解析出来啊?我没这需求。
guonaihong
2020-03-15 17:34:36 +08:00
@ggicci 因果关系是,是先有 curl 的命令(别人提供的),想快速用 go 发射出去。
0o0O0o0O0o
2020-03-15 19:41:10 +08:00
@guonaihong #24 这句说得我有点混乱了,看你举例的代码不就是要解析 curl 命令行的吗……
ggicci
2020-03-15 20:28:11 +08:00
@guonaihong 直接用 http 库重写一下这个 curl 请求不就行了?= =|||
leonme
2020-03-15 20:31:59 +08:00
httpie 香
guonaihong
2020-03-15 21:08:05 +08:00
@0o0O0o0O0o 对啊,是要用 go 解析 curl 命令的。
我们在讨论实现的细节有个分歧。
你是想用解析 curl---->生成 go 代码的方式。在#24 表达这种方式不太好实现。
目前倾向于使用 解析 curl---->生成*http.Request

现在不混乱了吧。
YanwenSun
2020-03-15 21:19:24 +08:00
曾经有计划做一个 curl->php->php curl 发送完整 curl 命令到 php 转换并请求 再带着返回头和内容(如果有)发回来的 proxy
后来发现最多也就是填几个会用到的 放虚拟主机上简单用用还是蛮方便的
guonaihong
2020-03-15 21:41:18 +08:00
@ggicci 对于你的疑问,换种说话,标准库可以做很多事情。为啥还有这么多的库会出现补充它,不是说标准库不够好,而是做一件事太慢(非运行时,而是编码慢)。
你说的可以用标准库做,试想下下面的命令要你用 http 库最快要多长时间翻译成 go 代码。
```bash
curl -X POST url -d 'username=yourusername&password=yourpassword'
curl --request PUT url
curl -r 0-20000 -o myfile.png url
curl -F text=good -F voice=@./good.voice url
```
如果不在乎编码慢,我也不知道说啥了。如果在乎还有一例。

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

最后想说:天下武功唯快不破。。。
guonaihong
2020-03-15 21:42:47 +08:00
@YanwenSun 同道中人。我后面想玩个大的,实现大部分 curl 选项。
guonaihong
2020-03-15 21:44:01 +08:00
@leonme httpie 是很香,只是受众比 curl 略低。
pharaoh168
2020-03-15 22:25:44 +08:00
vs code 有一个 REST Client 扩展,可以直接解析和运行 curl,还可以生成各种语音的代码。
guonaihong
2020-03-15 23:15:48 +08:00
@pharaoh168 这个插件名字是?我看下有没有 go 的。如果能实现百分百 curl 选项,我就玩别的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX