我正在寻找在 Go 中制作代理网关。快完成了!仍然缺少一件事:将整个客户端响应发送到服务器请求。我有自己的 HTTP 处理程序:func (f HttpHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) { if rurl, err := getOriginurl(r.RequestURI); err == nil { [...] client := &Http.Client{} r.URL = rurl r.RequestURI = "" resp, err := client.Do(r) if err == nil { for k, vs := range resp.Header { for _, v := range vs { w.Header().Set(k, v) } } w.WriteHeader(resp.StatusCode) if responseData,err := ioutil.ReadAll(resp.Body); err == nil { w.Write(responseData) } } }}func getOriginurl(request string) *url.URL { {...} // Would return an *url.URL with : http://127.0.0.1:8080/{requestURI}}我正在寻找一种方法来优化解析客户端对 ResponseWriter 的响应的方式。实际上我的问题是:如何详尽地将 Response 类型解析为 ResponseWriter ?
1 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
您可以使用httputil.NewSingleHostReverseProxy代替您自己的 HTTP 客户端逻辑。
httputil.NewSingleHostReverseProxy(rurl).ServeHTTP(w, r)
- 1 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消
