0

我正在尝试将来自 Go 后端的请求代理到微服务,并在将响应发送到客户端之前对其进行修改。请求链为:Client -> Go backend -> microservice -> Go backend -> client

我正在使用 Go Gin 框架。工作中间件:

func ReverseProxy(target string) gin.HandlerFunc {
    log.Println(target)
    url, err := url.Parse(target)
    if err != nil {
        log.Fatal(err)
    }
    proxy := httputil.NewSingleHostReverseProxy(url)
    return func(c *gin.Context) {
        proxy.ServeHTTP(c.Writer, c.Request)
    }
}

现在我的问题是:如何接收和修改微服务发送的响应?

4

1 回答 1

4

使用ReverseProxy .ModifyResponse 怎么样?

例如,这将为响应添加一个自定义标头。

func addCustomHeader(r *http.Response) error {
    r.Header["Hello"] = []string{"World"}
    return nil
}

proxy.ModifyResponse = addCustomHeader
于 2017-03-25T18:34:39.717 回答