2017-03-25 3 views
0

Go 백엔드에서 요청을 프록시 처리하고 응답을 수정하여 클라이언트로 보내려고합니다. 요청 체인은 다음과 같습니다. Client -> Go backend -> microservice -> Go backend -> 클라이언트프록시 미들웨어로 이동하여 응답을 수정하십시오.

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) 
    } 
} 

이제 내 질문은 : 마이크로 서비스에서 보낸 응답을 받고 수정할 수 있습니까?

답변

1

ReverseProxy.ModifyResponse?

예를 들어, 응답에 사용자 지정 헤더가 추가됩니다.

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

proxy.ModifyResponse = addCustomHeader 
+0

답장을 보내 주셔서 감사합니다. 구현 방법에 대한 예를 들려 주시겠습니까? – leandermelms

+1

예제를 추가했습니다. – Zoyd