Para crear un Servidor Web con Golang no se requiere mucho código, aunque debes estar familiarizado con conceptos básicos de comunicación por http. También es necesario que sepas que para aplicaciones grandes es mejor usar un Framework, para que te facilite el reconocimiento y control de las peticiones de los usuarios de una forma más robusta como lo hace Gin. Sin embargo, a veces si es útil tener el control absoluto de cada petición y para comenzar, te mostramos y explicamos como hacerlo. El código es el siguiente:
package main //decodigo.com import ( "fmt" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Saludos, bienvenido a %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) log.Fatal(http.ListenAndServe(":8080", nil)) }
En función principal llamamos a http.HandleFunc, que le dice al paquete http que maneje todas las solicitudes a la raíz web («/») con el controlador o manejador «handler«.
http.HandleFunc("/", handler)
Posteriormente se llama a http.ListenAndServe, especificando que debe escuchar peticiones en el puerto 8080 en cualquier interfaz («: 8080»). No te preocupes ahora por el segundo parámetro.
log.Fatal(http.ListenAndServe(":8080", nil))
ListenAndServe siempre devuelve un error, pero será devuelto cuando ocurra un error inesperado en alguna petición. Para registrar ese error, envolvemos la llamada a la función con log.Fatal. El controlador de funciones es del tipo http.HandlerFunc. Toma un http.ResponseWriter y un http.Request como argumentos. Nuestro argumento w de tipo http.ResponseWriter ensambla la respuesta del servidor HTTP; enviándola por HTTP al cliente. El argumento r de tipo http.Request es una estructura de datos que representa la solicitud HTTP del cliente. El parámetro r.URL.Path es el componente de ruta de la URL de solicitud. La cadena «[1:]» al final, significa «crear un sub-segmento de Ruta desde el primer carácter hasta el final«. Esto elimina la «/» inicial del nombre de la ruta.
No te preocupes tanto si no entiendes ahora lo que está pasando.
Si ejecutas el ejemplo en el navegador con la URL:
http://localhost:8080/url_prueba
Obtendrás como respuesta en el navegador lo siguiente:
El mensaje que te devuelve es el siguiente:
Saludos, bienvenido a url_prueba!
Puedes cambiar el final de la URL y probar otras distintas.
Algo importante que debes tomar en cuenta es que estás usando un puerto que normalmente no se usa, el 8080. Por lo que es posible que tu sistema operativo requiera confirmación para su uso si estás en Windows o bien, tu deberás otorgarle permisos desde el Firewall en el caso de Linux. Esperamos que este ejemplo sencillo de cómo crear un Servidor Web con Golang te sea útil para comenzar.
Ver más documentación: https://golang.org/doc/articles/wiki/
Más información en inglés: https://geekole.com/create-a-web-server-with-golang/