🥇 Servidores Web, Error 404.

El comportamiento predeterminado del servidor web, es redireccionar a “/” cuando no existe una ruta definida. Es decir que si accesamos una ruta no definida en el ejemplo anterior por ejemplo http://localhost:8000/pest, sería el mismo que accesar http://localhost:8000/.

$ curl -is http://localhost:8000/prueba

Obtendríamos…

HTTP/1.1 200 OK
Content-Type: text/html
Date: Sat, 20 Apr 2019 00:04:13 GMT
Content-Length: 10

Hola Mundo

Para indicar al router que tenemos que regresar un mensaje 404 (No Encontrado), tenemos que agregar un condicional a la ruta del home para verificar que en realidad sea esta la que se esta invocando, de otra forma se mostrara un error 404.

package main

import "net/http"

func Home(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
        http.NotFound(w, r)
        return
    }
    w.Write([]byte("Hola Mundo"))
}

func main() {
    http.HandleFunc("/", Home)
    http.ListenAndServe(":8000", nil)
}

Ahora comprobamos que al accesar la ruta Home el Path sea realmente /, de otra forma disparamos el not found como respuesta.

if r.URL.Path != "/" {
    http.NotFound(w, r)
    return
}

Al hacer la peticion de curl, ahora obtenemos el error apropiado.

$ curl -is http://localhost:8000/prueba
HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Sat, 20 Apr 2019 00:41:49 GMT
Content-Length: 19
Servidores Web, Funciones de control. Servidores Web, Uso de cabeceras.
comments powered by Disqus