2.9 KiB
title | localeTitle |
---|---|
Using templates with your web server | Usando plantillas con su servidor web |
Cuando tenga un servidor web, es posible que desee insertar datos en sus respuestas. Veamos un código:
package main
import (
"net/http"
"html/template"
)
type PAGE struct {
NAME string
}
var page PAGE
func main() {
page.NAME = "Mark"
http.HandleFunc("/", servePage)
http.ListenAndServe(":8080", nil)
}
func servePage(writer http.ResponseWriter, reqest *http.Request) {
template := template.New("sayHello")
template, _ = template.Parse("Hello {{.NAME}}!")
template.Execute(writer, page)
}
Ahora inicie este programa y navegue por su navegador para:
http://localhost:8080/
La respuesta será:
Hello Mark!
Pero, ¿cómo funciona esto y qué hace el código? Bueno, en primer lugar importamos el paquete net/http
para que podamos ejecutar un servidor web. Luego importamos el paquete html/template
. Esto habilita una característica llamada plantillas; Y ahí es donde se trata este artículo.
También creamos un tipo llamado PAGE
, que tiene un campo llamado NAME
como string
tipo. También creamos una variable global llamada page
de tipo PAGE
, la estructura que acabamos de crear. En la función main
le damos al campo NAME
de la page
un valor de Mark
- mi nombre, ¡pero no dude en usar su propio nombre!
La función servePage
es un poco difícil al principio. Vamos a desarmarlo:
func servePage(writer http.ResponseWriter, reqest *http.Request) {
// 1. Creating a template
template := template.New("sayHello")
// 2. Filling the template
template, _ = template.Parse("Hello {{.NAME}}!")
// 3. Executing the template
template.Execute(writer, page)
}
Qué hacemos aquí? Veamos paso a paso:
- Creamos una plantilla . Debe ingresar un nombre, pero en realidad no importa el nombre que elija. Aquí elegí decir
sayHello
. - Luego llenamos la plantilla con algún texto. Por favor tome nota de la
{{.NAME}}
. - Finalmente, ejecutamos la plantilla. Esto significa que la plantilla se completa y se envía al cliente.
Pero, ¿cómo vamos de {{.NAME}}
a Mark
? Bueno, ¿recuerdas que usamos la variable de page
como un parámetro para el método Execute
? Este método mira los datos en la plantilla y ve {{.NAME}}
. El .NAME
indica que debe buscar un campo llamado NAME
dentro de la variable que se especificó como un parámetro cuando se llamó a Execute
. En este caso, encuentra ese campo y toma nota de que el valor es Mark
. {{
Y }}
le dicen a Execute
que debe reemplazar {{.NAME}}
con el valor que encontró. Así que el resultado final se convertirá en Hello Mark!
.
Puedes tener múltiples campos y múltiples {{.XXX}}
. Esta es una manera realmente fácil de insertar datos en las respuestas, ¡y ahora sabe cómo crear una plantilla en Go!