Saltar al contenido

Golang gin gonic web framework ruta proxy a otro backend

Después de de nuestra prolongada selección de datos resolvimos este atasco que pueden tener ciertos los usuarios. Te regalamos la respuesta y nuestro objetivo es que resulte de gran apoyo.

Solución:

Esta fue la solución que utilicé para hacer un proxy inverso de un subconjunto específico de puntos finales desde el marco de gin a otro backend:

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 = r
            req.URL.Scheme = "http"
            req.URL.Host = target
            req.Header["my-header"] = []stringr.Header.Get("my-header")
            // Golang camelcases headers
            delete(req.Header, "My-Header")
        
        proxy := &httputil.ReverseProxyDirector: director
        proxy.ServeHTTP(c.Writer, c.Request)
    

Puede hacer esto con la biblioteca estándar httputil.ReverseProxy.

Todavía no he encontrado una razón para usar ginebra, soy fanático de apegarme a stdlib siempre que sea posible. Sin embargo, creo que puede envolver este controlador ReverseProxy en gin.WrapH() para poder usarlo con tu router gin.

Reseñas y puntuaciones

Ten en cuenta difundir este ensayo si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *