前段问过诸位 v 友,go 里面有否有库可以解析 curl,经过求证 可以同时支持 FormData 和 body 的确实没有。好吧,所以有了 pcurl,正好填充 go 的一块空白领域。
pcurl 可以把 curl 的命令解析成*http.Request,无论是标准库粉还是 gout 粉都可以使用,这里平等对待。
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)
}
|  |      1misaka19000      2020-04-20 09:48:57 +08:00 资瓷 | 
|  |      2Vegetable      2020-04-20 10:02:57 +08:00 支持 | 
|  |      3Joyboo      2020-04-20 10:04:31 +08:00 X | 
|  |      4yoshiyuki      2020-04-20 10:28:32 +08:00 前排提个小问题,multi-part 能支持吗? | 
|  |      5xnode      2020-04-20 10:33:13 +08:00 字词 | 
|  |      6guonaihong OP @yoshiyuki 可以,请看第三个例子。 | 
|  |      7codingAlex      2020-04-20 10:37:47 +08:00 当然要资瓷一波 | 
|  |      8debuginn      2020-04-20 10:40:25 +08:00 牛逼  支持 | 
|  |      9guonaihong OP | 
|  |      10monkeyWie      2020-04-20 13:54:40 +08:00 资瓷 资瓷 | 
|  |      11guonaihong OP @monkeyWie 感谢感谢。。。 | 
|      12zhaoyong1990      2020-04-20 14:45:17 +08:00 支持 | 
|  |      13guonaihong OP @zhaoyong1990 感谢支持。。。 | 
|  |      14purensong      2020-04-20 16:35:37 +08:00 我不明白这么用和直接发 get post 有啥好处 | 
|  |      15guonaihong OP @purensong 直接 get post 是推荐的用法,有 curl 命令资产才推荐用 pcurl,现在明白了吧。 | 
|  |      16dbskcnc      2020-04-20 17:03:50 +08:00 不错, 这样调用网上的 rest api 方便多了,直接复制过来就能基本能用 | 
|  |      17guonaihong OP @dbskcnc 感谢支持。。。 | 
|  |      18aheadlead      2020-04-20 18:14:15 +08:00 好评 楼主怎么想到的。。。。 | 
|      19chenyi      2020-04-20 18:39:35 +08:00 资瓷一哈 | 
|  |      20guonaihong OP @chenyi 感谢支持。。。 | 
|  |      21guonaihong OP @aheadlead 我有个习惯,开发过程中哪个点不爽,会记录下来。这些个痛点就是灵感的来源。。。 |