国产探花免费观看_亚洲丰满少妇自慰呻吟_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武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汾阳市| 万州区| 西贡区| 云阳县| 信丰县| 福清市| 峨边| 常山县| 河西区| 古浪县| 新蔡县| 九龙坡区| 西乌珠穆沁旗| 和平区| 左权县| 淳安县| 黄龙县| 灵石县| 通江县| 龙游县| 裕民县| 古蔺县| 邹平县| 灯塔市| 武隆县| 介休市| 乐平市| 佛教| 开封县| 铅山县| 虞城县| 西安市| 东安县| 蒙阴县| 南平市| 拉萨市| 斗六市| 绥宁县| 岳普湖县| 桐庐县| 高安市|