the programming net guide golang body http go server standard-library

programming - Cambiar el código HTTP con http.ServeFile



golang web (1)

Al leer la fuente, no veo ninguna forma de cambiar el código de estado (que no sea el método que falla, lo que significa que no se publicará la página de error). Creo que está implícito que si los archivos se sirven, era un HTTP 200 que no es del todo irracional.

Recomiendo leer el archivo de la página de error en una cadena y luego usar este método; https://golang.org/pkg/net/http/#Error

EDITAR: Eso en realidad puede no ser lo suficientemente específico para usted incluso. Quiere el mensaje de error como texto sin formato, por lo que lo que sugerí es probablemente un uso indebido. En ese caso, te quedarán sin abstracciones útiles para hacer lo que quieras.

En respuesta a los comentarios, mi preferencia personal sería algo más en la línea de;

func main() { mux := http.NewServeMux() mux.HandleFunc("/sendstrailers", func(w http.ResponseWriter, req *http.Request) { resp := &http.Response{ StatusCode: 404, } resp.Write(w) }) }

pero también podría usar w.WriteHeader(http.StatusForbidden) o lo que sea, si esa es su preferencia. Cuales mejores suites que necesites Mi experiencia sería preparar el objeto de respuesta en un ámbito diferente al de mux, por eso creo que prefiero el bit anterior (tiene más sentido que tener métodos de ayuda que devuelvan datos no estructurados y luego escribir en el redactor de respuestas).

Estoy escribiendo un servidor en Go, y actualmente estoy implementando páginas de error (404, 500, etc.). Tengo archivos que pueden servir para estos errores, pero si uso http.ServeFile entonces obtengo el código HTTP 200 en su lugar. del código apropiado.

¿Hay alguna manera de cambiar el código de estado, o necesito reescribir http.ServeFile para este caso de uso?