软件需求:
简言之:实现流量shadow,或者流量复制请求
具体:针对某个post api,有prod,dev,test环境,而coming的数据很难伪造,或者很难让comming侧调用三个环境,所以要将流量复制到三个环境.
实现思路:
prod的comming流量正常请求和返回(req->handler)
dev,test环境走goroutinue
利用反向代理httputil.ReverseProxy
提供的serverHTTP
方法(传递了gin中的context.req和context.resposeWriter)
问题:
1.因为在gin中context是一个handler中共享的,所以就存在当请求prod后,c.respose已经写入了head,当再次请求dev环境,就存在:
Headers were already written
疑问:
所以是否有:ResponseWriter interface的 noop(我不关心dev,test环境的writer具体做了什么,我不关心返回结果)实现
如果test,dev在这种情况下不需要回应response,你可以使用
httptest.NewResponseRecorder
,返回的是一个httptest.ResponseRecorder
结构,这个结构只会记录写入了哪里东西,没有实际的作用,它也实现了ReponseWriter
接口。