扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
业务当中有需要分发http.request.body的场景。比如微信回调消息只能指定一个地址,所以期望可以复制一份消息发给其他服务。由服务B和接收微信回调的服务A一起处理微信回调信息。
创新互联建站是一家集网站建设,钟山企业网站建设,钟山品牌网站建设,网站定制,钟山网站建设报价,网络营销,网络优化,钟山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
最开始考虑的是直接转发http.request。使用 ReverseProxy 直接将http.request由服务A转发给服务B。但是微信涉及到验证等问题,完全调整好非常麻烦。所以转换思路,打算将http.request.body的内容直接post给服务B。
可是http.request是readcloser。我们将http.request readAll的时候讲无法再次读取http.request里面的信息。
其中c表示的是http的上下文
1.我们先将body从http.request里面读取出来,保存到一个变量里面。
2.然后再将变量里面的数据使用ioutil.NopCloser方法写回到http.request里面。
NopCloser returns a ReadCloser with a no-op Close method wrapping the provided Reader r.
NopCloser用一个无操作的Close方法包装Reader r返回一个ReadCloser接口。
这样我们就可以再次使用c.request来进行处理了。
golang复用http-request-body
get请求一般是在你请求的地址后边加上?par=''par2=''例如请求的页面是a.do(假设你后台是java)那么请求地址是这样的a.do?par='123'par2='456'这个请求传递的参数就par和par2他俩的值分别为123,456
1、首先使用自定义RoundTripper。
2、其次在请求前取出Header里的token,修改body。
3、最后实现动态修改payload,即可修改最大值。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流