流式 http client 关注度不高,朋友们帮提提建议

guonaihong 7月前 116

疑惑

下面聊的是 gout,gout 是 go 里面第一个流式 http client。下面是 feaute 列表,数据编解码这块基本做到极致,引入流式概念,既可以 core 很小巧,组合起来也很强大(benchmark 是第一个 filter 函数)。为啥关注度不高?还有哪些需要完善的地方?

feature

  • 支持 GET/PUT/DELETE/PATH/HEAD/OPTIONS
  • 支持设置请求 http header(可传 struct,map,array,slice 等类型)
  • 支持设置 URL query(可传 struct,map,array,slice,string 等类型)
  • 支持设置 json,xml,yaml 编码到请求 body 里面(SetJSON/SetXML/SetYAML)
  • 支持设置 form-data(可传 struct,map,array,slice 等类型)
  • 支持设置 x-www-form-urlencoded(可传 struct,map,array,slice 等类型) 支持 io.Reader,uint/uint8/uint16...int/int8...string...[]byte...float32,float64 至请求 body 里面
  • 支持解析响应 body 里面的 json,xml,yaml 至结构体里(BindJSON/BindXML/BindYAML)
  • 支持解析响应 body 的内容至 io.Writer, uint/uint8...int/int8...string...[]byte...float32,float64
  • 支持解析响应 header 至结构体里
  • 支持接口性能 benchmark,可控制压测一定次数还是时间,可控制压测频率
  • 等等更多

项目地址

https://github.com/guonaihong/gout

演示

gout-example.gif

最新回复 (27)
  • wangsongyan 7月前
    引用 2
    多在 v2 发帖子
  • zunceng 7月前
    引用 3
    集成 grpc ?
  • popbones 7月前
    引用 4
    文档改成英文的
  • reus 7月前
    引用 5
    你解决的根本不是痛点,没有
  • shunia 7月前
    引用 6
    优秀的英文文档呗,想热得靠 pr,国人 pr 的热情太低。
  • 楼主 guonaihong 7月前
    引用 7
    @popbones 这个版本加上。
  • 楼主 guonaihong 7月前
    引用 8
    @reus 哈哈,你的回答最有意思,上次看你怼过几个项目,有的最后 700star,有的 1w   star。
  • lishunan246 7月前
    引用 9
    给一个不用 net/http 和 valyala/fasthttp 的理由?
  • chennqqi 7月前
    引用 10
    net/http 足够好了,另外不知道你说的流式是啥意思
  • zhaogaz 7月前
    引用 11
    哎,有很多 star 高的项目都是垃圾。。。
  • 楼主 guonaihong 7月前
    引用 12
    @lishunan246 用标准库可以慢慢的做一件事,用库可以更爽更快的做一件事。这个看个人喜好了。
  • 楼主 guonaihong 7月前
    引用 13
    @zhaogaz 这个没法回答你。做开源项目的人都不喜欢评论别人的开源项目是垃圾,知道几千几万行的撸不容易。如果遇到问题一般直接提 pr 帮原作者完善下。
  • gesse 7月前
    引用 14
    star + watch 了
  • stanlry 7月前
    引用 15
    建议看看 go-resty,很早就有了
  • PiersSoCool 7月前
    引用 16
    流式调用的好处在哪里?更可读?更简洁?我的确没觉得更爽,net/http 代码可读性肯定比你这好一些,因为他没有封装流式的方法,这对于业务来说是无关的代码。
    所以那解决了 net/http 什么问题?我不知道。所以对标的是什么库,优缺点呢?
    生产环境可使用吗?崩溃了谁能去及时解决?没人想给自己造成麻烦。
    我怎么从 net/http 迁移?全部重写?那是不可能的。
  • python 7月前
    引用 17
    支持批量传 url slice 去请求拿响应结果不?
    错误处理呢?
    重试机制有吗?
    相比 fasthttp 性能如何?
    畸形页面的编码问题? gbk ?
  • 楼主 guonaihong 7月前
    引用 18
    @PiersSoCool 我下班后回答下,都是挺好的问题。
  • 楼主 guonaihong 7月前
    引用 19
    @python 我下班后回答,不错的建议。
  • 引用 20
    不错,学习一下
  • woostundy 7月前
    引用 21
    支持。
    我觉得需要个最佳实践项目,来告诉大家用这个库的场景。
  • matepi 7月前
    引用 22
    主要还是流式调试起来反人类……自己小玩玩可以,大逻辑项目不敢上
  • lishunan246 7月前
    引用 23
    @guonaihong 在什么场景下你的 gout 比标准库和 fasthttp 更爽更快?
  • 楼主 guonaihong 7月前
    引用 24
    @stanlry gout 实现的代码现在已经比 go-resty 多,很多功能 gout 有,go-resty 没有,全面超越还是有可能的。go-resty 的立意还是很不错的,不是 python 的 request 的搬砖项目。可惜作者没有好好设计。
  • 楼主 guonaihong 7月前
    引用 25
    @lishunan246 抱歉,我上面说的快是开发效率。这点应该没有争议。
    标准库里面的 net/http 至今也没有项目可以撼动其地位。fasthttp 支持 http2 还没成功,作者已经去玩时序数据库了。。。
  • 楼主 guonaihong 7月前
    引用 26
    @PiersSoCool 这里面的问题其实很好回答,我讲下自己的事情,以前我们 http server 都是基于标准库的,后面尝试 gin 确实可以提高开发效率就慢慢铺开,在用的过程就提提 pr 优化下。用标准库开发绝对问题,但是开发效率不是最优解。这需要你那么自己权衡。这对于选择任何开源项目都适用。
  • 楼主 guonaihong 7月前
    引用 27
    @PiersSoCool 忽略上一条,看这条。这里面的问题其实很好回答,我讲下自己的事情,以前我们 http server 都是基于标准库的,后面尝试 gin 确实可以提高开发效率就慢慢铺开,在用的过程就提提 pr 优化下。用标准库开发绝对很难遇到问题,但是开发效率不是最优解。这需要你那么自己权衡。这对于选择任何开源项目都适用。
  • 楼主 guonaihong 7月前
    引用 28
    @python 字符编码不会做,这个点能不到极致,就给更喜欢这点的童鞋做。gout 只做作者能轻松 hold 得住的点,有问题可以快速解决,保守估计再撸 2-3w 行代码还是可以驾驭得住的。

    批量 url 和重试我一直不想加。重试在我遇到的项目里面没有 fast fail 策略来的好使。有兴趣的话,可以在 gout 的 issue 上面一起讨论下。
  • 游客
    29
返回