Cómo construir un servidor web básico en Go
Go es un interesante lenguaje de programación para crear aplicaciones web modernas y software de sistemas. Barrió la industria de la tecnología en su lanzamiento y está impulsando servicios como Docker, Kubernetes, Terraform, Dropbox y Netflix.
Además, la sólida colección de paquetes integrados de Go lo convierte en una excelente opción para la programación web. Este artículo le enseñará cómo se escribe un servidor web básico en Go.
Importar los paquetes necesarios
El paquete net / HTTP ofrece todo lo necesario para crear servidores y clientes web. Este paquete expone varias funciones útiles para tratar con la programación web.
Puede importarlo agregando la siguiente línea en la parte superior de su código fuente:
import "net/http"
También usaremos el paquete fmt para formatear cadenas y el paquete log para manejar errores. Puede importarlos individualmente como se muestra arriba o factorizar todos los paquetes usando una sola declaración de importación:
import (
"fmt"
"log"
"net/http"
)
Puede proceder a escribir la función principal después de importar los paquetes requeridos. Continúe y guarde el archivo de origen con una extensión .go . Si está usando Vim, use el siguiente comando para guardar y salir de Vim :
:wq server.go
Escribir la función principal
Los programas Go viven dentro de la función principal, acertadamente llamada "principal". Deberá implementar la llamada al servidor aquí. Agregue las siguientes líneas en su código fuente y vea lo que hacen:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Estamos definiendo la función principal usando la palabra clave func . Go tiene reglas estrictas con respecto a la colocación de la riostra de apertura, así que asegúrese de que la riostra inicial esté en la línea correcta. La primera declaración en main define que todas las solicitudes web que llegan a la ruta raíz ( "/" ) serán manejadas por index , una función del tipo http.HandlerFunc .
La segunda línea inicia el servidor web a través de la función http.ListenAndServe . Indica al servidor que escuche continuamente las solicitudes HTTP entrantes en el puerto 8080 de la máquina host. El segundo parámetro de esta función es necesario para bloquear el programa hasta su finalización.
Dado que http.ListenAndServe siempre devuelve un error, estamos envolviendo esta llamada dentro de una llamada log.Fatal . Esta declaración registra cualquier mensaje de error generado en el lado del servidor.
Implementación de la función de controlador
Como puede ver, la función principal llama al índice de la función del controlador para procesar las solicitudes de los clientes. Sin embargo, todavía tenemos que definir esta función para nuestro servidor.
Agreguemos las declaraciones necesarias para que la función de índice sea utilizable:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Esta función toma dos argumentos diferentes de tipo http.ResponseWriter y http.Request . El parámetro http.ResponseWriter contiene la respuesta del servidor a la solicitud entrante, que viene en forma de un objeto http.Request.
La función Fprintf del paquete fmt se usa para mostrar y manipular cadenas de texto. Estamos usando esto para mostrar la respuesta del servidor a nuestras solicitudes web. Por último, el componente r.URL.Path [1:] se utiliza para recuperar datos que vienen después de la ruta raíz.
Sumando todas las piezas juntas
Su servidor web Go debería estar listo una vez que haya agregado todas las piezas. El código debería tener un aspecto similar al siguiente:
package main
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
La primera línea es necesaria para compilar este código de servidor web Go como un archivo ejecutable.
Cree servidores web con Go
Los robustos paquetes de bibliotecas de Go facilitan la programación web para principiantes. Puede desarrollar rápidamente servidores web sencillos con solo unas pocas líneas de código.
Además, las potentes funciones de prueba de este lenguaje de programación también facilitan la implementación de metodologías de programación ágiles. Se trata de un grupo de estrategias de desarrollo de software basadas en el desarrollo iterativo y una amplia colaboración entre equipos.