goreq 是一个极其简单的流式golang http client。它是我寻找类似Java OKHttp库的golang http client库时创建的。
最原始的代码fork自 gorequest ,它实现了Node.js库 SuperAgent 类似的功能。但是gorequest有一些bug没有fix,用户也提出了一些新的特性没有支持。
我重构了代码,更正了一些bug,增加了新的特性,尤其是POST BODY现在可以支持任意类型, 不再局限于json或者form字符串格式。 因为改动比较大,不好提交pull requests,干脆创建了一个新的轮子。这就是这个项目的最初目的。
比如下面调用baidu API根据IP地址获取地理信息的例子:
支持的HTTP METHOD
支持 GET, POST, HEAD, PUT, DELETE, PATCH 等http method,而且都想HTTP GET一样简单, 比如下面的HTTP PUT:
输出结果:
Request Body及Header
发送一个JSON格式的内容也很简单, 你可以传入一个struct, GoReq自动将它转为一个JSON字符串。
注意在这种情况下(设置了body,未设置Content-Type), Content-Type为 application/json
。
甚至你可以传递一个查询字符串:
注意在这种情况下(设置了body,未设置Content-Type), Content-Type为 application/x-www-form-urlencoded
。所以这里显示地设置为"application/json"
Proxy和超时
可以为读写设置一个超时时间:
Basic Auth
GoReq支持Basic Auth身份验证:
更多的例子和文档请查看 godoc