es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ir (GoLang) Gorilla/Mux Establecer Código de Respuesta

Estoy teniendo dificultades al intentar establecer el Código de Respuesta para una Ruta Gorilla Mux en Go. Si tengo una ruta muy simple configurada como

// Ruta de prueba ficticia
router.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Access-Control-Allow-Headers", "*")
    w.Header().Set("Access-Control-Allow-Origin", "*")
    w.Header().Set("Access-Control-Allow-Methods", "POST, GET")
    w.Header().Set("Content-Type", "application/json")
    fmt.Fprintf(w, `{"message":"OK"}`)
}).Methods("POST")

Parece que está funcionando correctamente y devuelve un Estado 200, lo cual está bien. Pero si intento establecer manualmente el código de respuesta de la siguiente manera.

// Ruta de prueba ficticia
router.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK) // agregué esto para probar
    w.Header().Set("Access-Control-Allow-Headers", "*")
    w.Header().Set("Access-Control-Allow-Origin", "*")
    w.Header().Set("Access-Control-Allow-Methods", "POST, GET")
    w.Header().Set("Content-Type", "application/json")
    fmt.Fprintf(w, `{"message":"OK"}`)
}).Methods("POST")

Entonces parece que se ha establecido el código de respuesta en 200, pero aún así se muestra como un error al realizar una solicitud REST.

POST *url*/test net::ERR_FAILED 200

No estoy seguro de por qué sucede esto, ¿no es esta la forma correcta de establecer un código de respuesta?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar relacionado con la forma en que el cliente REST interpreta el código de respuesta HTTP. En el primer ejemplo, el código de respuesta no se establece explícitamente, pero se establece por defecto en 200, que el cliente REST parece interpretar correctamente como una respuesta exitosa.

    En el segundo ejemplo, el código de respuesta se establece explícitamente en 200 utilizando w.WriteHeader(http.StatusOK), lo cual técnicamente debería tener el mismo efecto que el comportamiento por defecto en el primer ejemplo. Sin embargo, es posible que el cliente REST esté interpretando el código de respuesta establecido explícitamente como un error, posiblemente debido a alguna mala configuración o error en el cliente.

    En general, establecer el código de respuesta utilizando w.WriteHeader() es la forma correcta de establecer manualmente el código de respuesta HTTP en Go con Gorilla Mux. Es posible que el problema no esté relacionado con el código en sí, sino más bien con el cliente u otros factores. Puede ser útil verificar la configuración del cliente y/o realizar pruebas con otros clientes para verificar si el problema está en el código o no.

Comments are closed.