¿Qué es el error 404?
El comportamiento predeterminado del servidor web, es redireccionar a “/” cuando no existe una ruta definida. Es decir que si accedemos una ruta no definida (404) 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 una respuesta 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.
Ejemplo del uso de una respuesta 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 petición 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