日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
這個Go開源庫讓你能夠更細致地掌握HTTP請求過程

大家好,我是歐盆索思(opensource),每天為你帶來優(yōu)秀的開源項目!

在日常開發(fā)中,通過 HTTP 請求其他服務(wù)是常有的事情。通常,我們只需要發(fā)出請求,獲取響應(yīng)并進行處理即可,處理過程被 http 庫封裝了。然而有沒有辦法更好地掌控請求的細節(jié)呢?今天推薦的這個 Go 語言庫 mediary 就是干這個的。

項目地址:https://github.com/HereMobilityDevelopers/mediary,這個庫是上個月剛開源的。

具體來說,這個庫是將攔截器增加到 http.Client 上,能夠更好地掌控其中的細節(jié),具體來說可以做的事情包括:

  • 轉(zhuǎn)儲(dump)請求和響應(yīng),輸出到日志;
  • 在發(fā)送之前更改請求,或者在返回之前更改響應(yīng);
  • 使用 Opentracing/Jaeger 添加跟蹤信息;
  • 發(fā)送相關(guān)指標(biāo)到統(tǒng)計監(jiān)控系統(tǒng);

注:攔截器這個概念最早來自 AOP(面向切面編程)。通俗來說,攔截器就是可以在目標(biāo)動作的前后插入一些代碼,執(zhí)行一些其他的動作。

怎么使用呢?示例如下:

 
 
 
  1. var client *http.Client 
  2. client = mediary.Init().AddInterceptors(your interceptor).Build() 
  3. client.Get("https://golang.org") 

看一個具體的 dump 攔截的例子:

 
 
 
  1. client := mediary.Init().AddInterceptors(dumpInterceptor).Build()  
  2. client.Get("https://github.com")  
  3. func dumpInterceptor(req *http.Request, handler mediary.Handler) (*http.Response, error) {  
  4. if bytes, err := httputil.DumpRequestOut(req, true); err == nil {  
  5. fmt.Printf("%s", bytes)  
  6. // GET / HTTP/1.1  
  7. // Host: github.com  
  8. // User-Agent: Go-http-client/1.1  
  9. // Accept-Encoding: gzip  
  10. }  
  11. return handler(req)  
  12. }  

同時加多個攔截器也是可以的:

 
 
 
  1. client := mediary.Init(). 
  2. AddInterceptors(First Interceptor, Second Interceptor). 
  3. AddInterceptors(Third Interceptor). 
  4. Build() 

文章題目:這個Go開源庫讓你能夠更細致地掌握HTTP請求過程
URL地址:http://www.5511xx.com/article/djpsghj.html