Golang gin gonic web 框架代理路由到另一个后端
Golang gin gonic web framework proxy route to another backend
如何在 Gin Gonic web golang 框架
中将一些路由的代理 web 请求反向到另一个后端
有没有办法在Handle函数中直接转发如下图?
router := gin.New()
router.Handle("POST", "/api/v1/endpoint1", ForwardToAnotherBackend)
您可以使用标准库 httputil.ReverseProxy。
我还没有找到自己使用 gin 的理由,我喜欢尽可能坚持使用 stdlib。
但是,我相信您可以将此 ReverseProxy 处理程序包装在 gin.WrapH()
中,以便能够将其与您的杜松子酒路由器一起使用。
这是我用于将特定端点子集从 gin 框架反向代理到另一个后端的解决方案:
router.POST("/api/v1/endpoint1", ReverseProxy())
和:
func ReverseProxy() gin.HandlerFunc {
target := "localhost:3000"
return func(c *gin.Context) {
director := func(req *http.Request) {
r := c.Request
req.URL.Scheme = "http"
req.URL.Host = target
req.Header["my-header"] = []string{r.Header.Get("my-header")}
// Golang camelcases headers
delete(req.Header, "My-Header")
}
proxy := &httputil.ReverseProxy{Director: director}
proxy.ServeHTTP(c.Writer, c.Request)
}
}
当您使用 director 时:
req.URL.Scheme = "http"
req.Host, req.URL.Host = "google.com", "google.com"
如何在 Gin Gonic web golang 框架
中将一些路由的代理 web 请求反向到另一个后端有没有办法在Handle函数中直接转发如下图?
router := gin.New()
router.Handle("POST", "/api/v1/endpoint1", ForwardToAnotherBackend)
您可以使用标准库 httputil.ReverseProxy。
我还没有找到自己使用 gin 的理由,我喜欢尽可能坚持使用 stdlib。
但是,我相信您可以将此 ReverseProxy 处理程序包装在 gin.WrapH()
中,以便能够将其与您的杜松子酒路由器一起使用。
这是我用于将特定端点子集从 gin 框架反向代理到另一个后端的解决方案:
router.POST("/api/v1/endpoint1", ReverseProxy())
和:
func ReverseProxy() gin.HandlerFunc {
target := "localhost:3000"
return func(c *gin.Context) {
director := func(req *http.Request) {
r := c.Request
req.URL.Scheme = "http"
req.URL.Host = target
req.Header["my-header"] = []string{r.Header.Get("my-header")}
// Golang camelcases headers
delete(req.Header, "My-Header")
}
proxy := &httputil.ReverseProxy{Director: director}
proxy.ServeHTTP(c.Writer, c.Request)
}
}
当您使用 director 时:
req.URL.Scheme = "http"
req.Host, req.URL.Host = "google.com", "google.com"