国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

golang復用http.request.body的方法示例

2020-04-01 18:51:45
字體:
來源:轉載
供稿:網友

問題及場景

業務當中有需要分發http.request.body的場景。比如微信回調消息只能指定一個地址,所以期望可以復制一份消息發給其他服務。由服務B和接收微信回調的服務A一起處理微信回調信息。

本文將詳細介紹golang復用http.request.body的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

解決思路

最開始考慮的是直接轉發http.request。使用ReverseProxy直接將http.request由服務A轉發給服務B。但是微信涉及到驗證等問題,完全調整好非常麻煩。所以轉換思路,打算將http.request.body的內容直接post給服務B。

可是http.request是readcloser。我們將http.request readAll的時候講無法再次讀取http.request里面的信息。

如何才能將http.request.body復制使用呢?

其中c表示的是http的上下文

 // 把request的內容讀取出來 var bodyBytes []byte if c.Request.Body != nil {  bodyBytes, _ = ioutil.ReadAll(c.Request.Body) } // 把剛剛讀出來的再寫進去 c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

1.我們先將body從http.request里面讀取出來,保存到一個變量里面。

2.然后再將變量里面的數據使用ioutil.NopCloser方法寫回到http.request里面。

https://golang.org/pkg/io/ioutil/#NopCloser

NopCloser returns a ReadCloser with a no-op Close method wrapping the provided Reader r.

NopCloser用一個無操作的Close方法包裝Reader r返回一個ReadCloser接口。

這樣我們就可以再次使用c.request來進行處理了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛隆县| 双流县| 清徐县| 育儿| 博乐市| 临桂县| 桦南县| 宜章县| 阆中市| 太白县| 措美县| 云阳县| 腾冲县| 陆良县| 肥城市| 扎鲁特旗| 华蓥市| 安泽县| 镇雄县| 巨鹿县| 江都市| 通江县| 陕西省| 平潭县| 千阳县| 镇远县| 四会市| 广灵县| 阿拉善左旗| 竹北市| 扎鲁特旗| 友谊县| 滕州市| 桦南县| 永善县| 宁河县| 西乡县| 唐河县| 荔波县| 改则县| 浮山县|