大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目!

在日常开发中,通过 HTTP 请求其他服务是常有的事情。通常,我们只需要发出请求,获取响应并进行处理即可,处理过程被 http 库封装了。然而有没有办法更好地掌控请求的细节呢?今天推荐的这个 Go 语言库 mediary 就是干这个的。
项目地址:https://github.com/HereMobilityDevelopers/mediary,这个库是上个月刚开源的。
具体来说,这个库是将拦截器增加到 http.Client 上,能够更好地掌控其中的细节,具体来说可以做的事情包括:
注:拦截器这个概念最早来自 AOP(面向切面编程)。通俗来说,拦截器就是可以在目标动作的前后插入一些代码,执行一些其他的动作。
怎么使用呢?示例如下:
- var client *http.Client
 - client = mediary.Init().AddInterceptors(your interceptor).Build()
 - client.Get("https://golang.org")
 
看一个具体的 dump 拦截的例子:
- client := mediary.Init().AddInterceptors(dumpInterceptor).Build()
 - client.Get("https://github.com")
 - func dumpInterceptor(req *http.Request, handler mediary.Handler) (*http.Response, error) {
 - if bytes, err := httputil.DumpRequestOut(req, true); err == nil {
 - fmt.Printf("%s", bytes)
 - // GET / HTTP/1.1
 - // Host: github.com
 - // User-Agent: Go-http-client/1.1
 - // Accept-Encoding: gzip
 - }
 - return handler(req)
 - }
 
同时加多个拦截器也是可以的:
- client := mediary.Init().
 - AddInterceptors(First Interceptor, Second Interceptor).
 - AddInterceptors(Third Interceptor).
 - Build()
 
                本文名称:这个Go开源库让你能够更细致地掌握HTTP请求过程
                
                文章分享:http://www.csdahua.cn/qtweb/news18/355568.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网