为了账号安全,请及时绑定邮箱和手机立即绑定

代理网关发回 HTTP 响应

代理网关发回 HTTP 响应

Go
MMTTMM 2022-05-18 14:47:06
我正在寻找在 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)


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号