golang中实现resposeWriter noop

软件需求:
简言之:实现流量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具体做了什么,我不关心返回结果)实现

阅读 2.1k
1 个回答

如果test,dev在这种情况下不需要回应response,你可以使用httptest.NewResponseRecorder,返回的是一个httptest.ResponseRecorder结构,这个结构只会记录写入了哪里东西,没有实际的作用,它也实现了ReponseWriter接口。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题