V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
guonaihong
V2EX  ›  程序员

超好用的流式 http client,发布啦!

  •  
  •   guonaihong ·
    guonaihong · Sep 29, 2019 · 4736 views
    This topic created in 2409 days ago, the information mentioned may be changed or developed.

    历时 4 个月,精心设计,追求 unix 工具箱原则,一个件事只有一个 API 完成。像 SetHeader 和 SetHeaders 这种 API 不存在,只有 SetHeader。目标是成为此类项目影响力最大的一个,当然这个目标还很长远,欢迎 v 友提 issue 和 pr。

    项目地址

    https://github.com/guonaihong/gout

    技能树

    gout.png

    18 replies    2019-09-29 17:04:46 +08:00
    m2276699
        1
    m2276699  
       Sep 29, 2019
    "目标是成为此类项目影响力最大的一个"
    C#可用吗?
    w292614191
        2
    w292614191  
       Sep 29, 2019
    还以为是支持 IDEA 的插件呢。
    guonaihong
        3
    guonaihong  
    OP
       Sep 29, 2019
    @w292614191 好吧。我下次我备注下是开发 lib
    micean
        4
    micean  
       Sep 29, 2019
    一个件事只有一个 API 完成。像 SetHeader 和 SetHeaders 这种 API 不存在,只有 SetHeader。
    ==========================

    这种理念太偏执了吧,没办法做到“影响力最大的一个”
    guonaihong
        5
    guonaihong  
    OP
       Sep 29, 2019
    @micean 这和语言生态有关系,go 也用的 unix 工具箱原则。你会发现开发起来特别爽。我现在就比较头疼 rust,干一件事,不同的语境下面,用的函数都不一样。
    Immortal
        6
    Immortal  
       Sep 29, 2019
    我以为流式是 steam 原来是链式操作- -
    Immortal
        7
    Immortal  
       Sep 29, 2019
    steam->stream
    Immortal
        8
    Immortal  
       Sep 29, 2019   ❤️ 1
    粗略看了下 貌似很"gin"
    wysnylc
        9
    wysnylc  
       Sep 29, 2019   ❤️ 1
    apache httpclient fluent 你可以参考这个来实现
    GM
        10
    GM  
       Sep 29, 2019
    恕我直言,这种语法,铁定火不起来,更别说什么“成为此类项目影响力最大的一个”了
    guonaihong
        11
    guonaihong  
    OP
       Sep 29, 2019
    @wysnylc 谢谢。。。
    guonaihong
        12
    guonaihong  
    OP
       Sep 29, 2019
    @GM 兄弟可有好的想法?
    guonaihong
        13
    guonaihong  
    OP
       Sep 29, 2019
    @m2276699 c#不可以。不过 go 语法不复杂,看一天就可以写了。还有个 go 特别爽的是,方便交叉编译到 windows, linux,mac 上面。
    guonaihong
        14
    guonaihong  
    OP
       Sep 29, 2019
    @Immortal 兄弟,你是第一个看出来的。
    littlespider89
        15
    littlespider89  
       Sep 29, 2019
    guonaihong
        16
    guonaihong  
    OP
       Sep 29, 2019
    @Immortal 流式这个词看的 smallnest 说的,他写的博客不错。
    sunriz
        17
    sunriz  
       Sep 29, 2019   ❤️ 1
    初始化默认都填 nil,那如果要给参数就要填个 client 结构体的指针,填完后再在外面修改结构体内容,会发生什么? http 库本身是有意导出这些结构体成员,本身是无状态的。但是如果包了一层,还把底层暴露出去,感觉不合适,而且你也必须一直保持中间这层无状态,容易有坑
    guonaihong
        18
    guonaihong  
    OP
       Sep 29, 2019
    @sunriz 标准库里面 http.Client 需要注意的地方,他里面是个连接池。如果不停的声明新的。会导致 fd 不够用,从而报错,只要保证业务声明一个 http.Client 就行。或者传 nil。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   766 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 21:59 · PVG 05:59 · LAX 14:59 · JFK 17:59
    ♥ Do have faith in what you're doing.