会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 这个 Go 开源库让你能够更细致地掌握 HTTP 请求过程!

这个 Go 开源库让你能够更细致地掌握 HTTP 请求过程

时间:2025-11-03 11:19:56 来源:益强数据堂 作者:数据库 阅读:973次

 

大家好,个G够更我是源库欧盆索思(opensource),每天为你带来优秀的地掌开源项目!

在日常开发中,请求过通过 HTTP 请求其他服务是个G够更常有的事情。通常,源库我们只需要发出请求,地掌获取响应并进行处理即可,请求过处理过程被 http 库封装了。个G够更然而有没有办法更好地掌控请求的源库细节呢?今天推荐的免费信息发布网这个 Go 语言库 mediary 就是干这个的。

项目地址:https://github.com/HereMobilityDevelopers/mediary,地掌这个库是请求过上个月刚开源的。

具体来说,个G够更这个库是源库将拦截器增加到 http.Client 上,能够更好地掌控其中的地掌细节,具体来说可以做的事情包括:

转储(dump)请求和响应,高防服务器输出到日志; 在发送之前更改请求,或者在返回之前更改响应; 使用 Opentracing/Jaeger 添加跟踪信息; 发送相关指标到统计监控系统;

注:拦截器这个概念最早来自 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() 

(责任编辑:IT科技类资讯)

推荐内容
  • 电脑开机总提示错误恢复(解决电脑开机错误的有效方法)
  • 图解 & 深入浅出JavaWeb:事务必会必知
  • PostgreSQL数据库单机扩展为流复制
  • MySQL:什么时候NOT IN不等于NOT EXISTS
  • 如何设置个性化开机密码提示界面(打造独一无二的电脑开机密码保护)
  • Python最常用的函数、基础语句有哪些?