NewSingleHostReverseProxy 非必要重写
来源:4-8 返回内容随心改1

ggangelo
2020-05-02
返回内容随心改这里面可以不用复制NewSingleHostReverseProxy 的实现方法,只要在new之后修改他的ModifyResponse值之后就可以了。
这个会更方便一些吧?
func main() {
rs1 := "http://127.0.0.1:2003/base"
url1,err1 := url.Parse(rs1)
if err1 != nil{
log.Println(err1)
}
proxy := httputil.NewSingleHostReverseProxy(url1)
proxy.ModifyResponse = func(response *http.Response) error {
oldPayload, err := ioutil.ReadAll(response.Body)
if err != nil{
return err
}
newPayLoad := []byte("hello " +string(oldPayload))
response.Body = ioutil.NopCloser(bytes.NewBuffer(newPayLoad))
response.ContentLength = int64(len(newPayLoad))
response.Header.Set("Content-Length",fmt.Sprint(len(newPayLoad)))
return nil
}
proxy.ErrorHandler = func(writer http.ResponseWriter, request *http.Request, err error) {
writer.Write([]byte(err.Error()))
}
log.Println("Starting httpserver at "+ addr)
log.Fatal(http.ListenAndServe(addr,proxy))
}
写回答
1回答
-
牛儿吃草
2020-05-02
是的,可以这样写。
单独摘出来NewSingleHostReverseProxy方法是为了拓展后面的,中间件支持和负载均衡器支持。00
相似问题