Go es un gran lenguaje para crear servidores web y servicios web simples pero eficientes. Proporciona un paquete HTTP integrado que contiene utilidades para crear rápidamente un servidor web o de archivos.
el objetivo de este tutorial es crear un servidor web que pueda aceptar una solicitud GET y servir una respuesta. Usaremos el servidor para servir archivos estáticos, actuando como un servidor de archivos. Luego haremos que el servidor web responda a una solicitud POST proveniente de un envío de formulario, como un formulario de contacto.,
sin más preámbulos, exploremos cómo construir su primer servidor web con Go.
Setup
necesitarás ir a la versión 1.11 o superior para seguir este tutorial.
en esta sección, crearemos todos los archivos necesarios y estableceremos la estructura de archivos correcta. Después de eso, importaremos nuestros paquetes para probar si la configuración funciona. No se preocupe, la configuración es muy básica para el servidor web de Golang.
cree los siguientes archivos y carpetas de acuerdo con la siguiente estructura., El archivo server.go
se encuentra en la raíz de tu proyecto, como lo hace el static
carpeta, que contiene dos archivos HTML: index.html
y form.html
.
- server.go- static/- - index.html- - form.html
ahora vamos a escribir un poco de código. Abra el archivo server.go
e importe los paquetes necesarios. Usaremos fmt
para imprimir datos útiles en el terminal y log
para imprimir errores fatales en caso de que el servidor web se bloquee.
el net/http
es el paquete más importante., Proporciona toda la funcionalidad para crear un cliente HTTP o una implementación de servidor, como un servidor web Golang.
package mainimport ( "fmt" "log" "net/http")
Por último, agreguemos una función simple main()
en el archivo server.go
que imprime un mensaje en el terminal.
func main() { fmt.Printf("Starting server at port 8080\n")}
para probar la configuración, inicie el servidor ficticio con el siguiente comando.
go run server.go
Si siguió junto con la configuración, debería ver la siguiente salida en su terminal.,
Starting server at port 8080
Si todo se ve bien, el siguiente paso es crear un servidor web.
iniciar un servidor web con rutas GET
en esta etapa, crearemos un servidor web que se sirva realmente en el puerto 8080 y pueda responder a las solicitudes GET entrantes.
Modifiquemos el código en nuestra funciónmain()
para iniciar un servidor web en el puerto 8080. El método ListenAndServe
es exportado por el paquete http
que importamos durante el paso uno. Este método nos permite iniciar el servidor web y especificar el puerto para escuchar las solicitudes entrantes.,
tenga en cuenta que el parámetro port debe pasarse como una cadena precedida por dos puntos de puntuación. El segundo parámetro acepta un controlador para configurar el servidor para HTTP / 2. Sin embargo, esto no es importante para este tutorial, por lo que podemos pasar con seguridad nil
como segundo argumento.
func main() { fmt.Printf("Starting server at port 8080\n") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) }}
en este punto, el servidor puede iniciarse, pero aún no sabe cómo manejar las solicitudes. Necesitamos pasar controladores al servidor para que sepa cómo responder a las solicitudes entrantes y qué solicitudes aceptar.,
usaremos la función HandleFunc
para agregar controladores de ruta al servidor web. El primer argumento acepta la ruta que necesita para escuchar /hello
. Aquí, le dice al servidor que escuche cualquier solicitud entrante para . El segundo argumento acepta una función que mantiene la lógica de negocio para responder correctamente a la solicitud.
de forma predeterminada, esta función acepta un ResponseWriter
para enviar una respuesta y un objeto Request
que proporciona más información sobre la solicitud en sí., Por ejemplo, puede acceder a información sobre los encabezados enviados, que puede ser útil para autenticar la solicitud.
como puede ver, el controlador envía un mensaje "Hello!”
mientras pasamos esta respuesta al ResponseWriter
.
Ahora vamos a probar esta configuración. Inicie el servidor web con go run server.go
y visite . Si el servidor responde con
"Hello!"
, puede continuar con el siguiente paso, donde aprenderá cómo agregar seguridad básica a las rutas de su servidor web de Golang.,
añadir seguridad básica a las rutas
no hace falta decir que la seguridad es importante. Exploremos algunas estrategias básicas para mejorar la seguridad de su servidor Web Go.
antes de hacerlo, deberíamos tomarnos un momento para aumentar la legibilidad de nuestro código. Vamos a crear la función helloHandler
, que contiene toda la lógica relacionada con la solicitud /hello
.
Este controlador utiliza el objeto Request
para comprobar si la ruta solicitada es correcta. Este es un ejemplo muy básico de cómo puede usar el objeto Request
.,
si la ruta es incorrecta, el servidor devuelve un error StatusNotFound
al usuario. Para escribir un error al usuario, puede usar el método http.Error
. Observe que el código StatusNotFound
corresponde a un error 404. Todos los códigos de estado se pueden encontrar en la documentación de Golang.
a continuación, añadimos una comprobación para verificar el tipo de solicitud. Si el método no corresponde a GET
, el servidor devuelve un nuevo error. Cuando ambas comprobaciones pasan, el servidor devuelve su respuesta de éxito "Hello!"
.,
La última cosa que necesitamos hacer es modificar el handleFunc
nuestro main()
función para aceptar las anteriores helloHandler
función.
http.HandleFunc("/hello", helloHandler)
a continuación se muestra el código completo para su archivo server.go
.
a continuación, iniciaremos el servidor Web Go con go run server.go
. Puede probar su seguridad enviando una solicitud POST a usando una herramienta como Postman o cURL.
iniciar un servidor web estático
en este paso, crearemos un servidor de archivos simple para alojar archivos estáticos., Esta será una adición muy simple al servidor web.
para asegurarnos de que tenemos contenido para servir en el servidor web, Modifiquemos el archivo index.html
ubicado en la carpeta static
. Para mantener las cosas simples, simplemente agregue un encabezado al archivo que diga «Static Website
.»Si lo desea, puede agregar más archivos o archivos de estilo para que su servidor web se Vea un poco mejor.
<html> <head> <title>Static Website</title> </head> <body> <h2>Static Website</h2> </body></html>
Para servir el static
carpeta, tendrás que añadir dos líneas de código server.go
., La primera línea de código crea el objeto servidor de archivos usando la función FileServer
. Esta función acepta una ruta en el tipo http.Dir
. Por lo tanto, tenemos que convertir la cadena path "./static”
a un tipo de ruta http.Dir
.
no olvide especificar la ruta Handle
, que acepta una ruta y el servidor de archivos. Esta función actúa de la misma manera que la función HandleFunc
, con algunas pequeñas diferencias. Para obtener más información sobre el objeto FileServer
, consulte la documentación.,
Es hora de probar el código. Arranca el servidor con la etiqueta go run server.go
y visita . Debería ver el encabezado «
Static Website
«.
aceptar un envío de formulario POST request
Por último, el servidor web tiene que responder a un envío de formulario.
agreguemos algo de contenido al archivoform.html
en la carpetastatic
. Observe que la acción del formulario se envía a /form
. Esto significa que la solicitud POST del formulario se enviará a ., El propio formulario pide la entrada de dos variables:
name
y address
.
el siguiente paso es crear el controlador para aceptar la solicitud /form
. El archivo form.html
ya se sirve a través del servidor de archivos y se puede acceder a través de
First, the function has to call ParseForm()
para analizar la consulta raw y actualizar r.PostForm
y r.Form
. Esto nos permitirá acceder a los valores name
y address
a través del método r.FormValue
.,
al final de la función, escribimos ambos valores en el ResponseWriter
usando fmt.Fprintf
.
no olvide agregar la nueva ruta del controlador de formularios a la función main()
.
http.HandleFunc("/form", formHandler)
ahora, el código completo se ve así.
probando el manejador de formularios
podemos probar el formulario iniciando el servidor con go run server.go
. Cuando se inicie el servidor, visite . Debería ver dos campos de entrada y un botón enviar.,
Cuando hayas rellenado el formulario, pulse el submit
botón. El servidor debe procesar su solicitud POST y mostrarle el resultado en la página de respuesta , como la siguiente respuesta.
Si ve el resultado anterior, ha creado con éxito su primer servidor web y de archivos de Golang. ¡Felicitaciones!
si desea explorar más los servidores web de Golang, la documentación del paquete HTTP de Golang está llena de excelentes ejemplos., Este tutorial sobre cómo escribir aplicaciones web en Go es otro gran recurso que cubre la mayoría de los aspectos básicos.
LogRocket: visibilidad completa de sus aplicaciones web
LogRocket es una solución de monitoreo de aplicaciones frontend que le permite reproducir problemas como si ocurrieran en su propio navegador. En lugar de adivinar por qué Ocurren los errores o pedir a los usuarios capturas de pantalla y volcados de Registros, LogRocket le permite reproducir la sesión para comprender rápidamente qué salió mal., Funciona perfectamente con cualquier aplicación, independientemente del marco, y tiene complementos para registrar el contexto adicional de Redux, Vuex y @ngrx/store.
además de registrar acciones Redux y estado, LogRocket registra registros de consola, errores de JavaScript, stacktraces, solicitudes/respuestas de red con encabezados + cuerpos, metadatos del navegador y registros personalizados. También instrumenta el DOM para grabar el HTML y CSS en la página, recreando videos perfectos de píxeles incluso de las aplicaciones de una sola página más complejas.
Pruébalo gratis.