2.8 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Using templates with your web server | Usando modelos com seu servidor da web |
Quando você tem um servidor da Web, talvez queira inserir dados em suas respostas. Vamos ver algum 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)
}
Agora inicie este programa e navegue em seu navegador para:
http://localhost:8080/
A resposta será:
Hello Mark!
Mas como isso funciona e o que o código faz? Bem, em primeiro lugar, importamos o pacote net/http para que possamos executar um servidor web. Em seguida, importamos o pacote html/template . Isso habilita um recurso chamado de template; e é aí que este artigo é sobre.
Também criamos um tipo chamado PAGE , que possui um campo chamado NAME como string tipo. Também criamos uma variável global chamada page do tipo PAGE , a estrutura que acabamos de criar. Na função main , damos ao campo NAME da page um valor de Mark - meu nome, mas fique à vontade para usar seu próprio nome!
A função servePage é um pouco difícil no começo. Vamos desmontar:
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)
}
O que fazemos aqui? Vamos ver passo a passo:
- Nós criamos um modelo . Você precisa digitar um nome, mas não importa qual nome você escolher. Aqui eu escolhi dizer
sayHello. - Em seguida, preenchemos o modelo com algum texto. Por favor, tome nota do
{{.NAME}}. - Finalmente, nós executamos o modelo. Isso significa que o modelo é preenchido e enviado ao cliente.
Mas como vamos de {{.NAME}} para Mark ? Bem, lembre-se que usamos a variável de page como um parâmetro para o método Execute ? Este método analisa os dados no modelo e vê {{.NAME}} . O .NAME indica que ele deve procurar por um campo chamado NAME dentro da variável que foi especificada como um parâmetro quando Execute foi chamado. Nesse caso, ele encontra esse campo e toma nota de que o valor é Mark . O {{ e }} estão dizendo Execute que ele deve substituir {{.NAME}} pelo valor encontrado. Então o resultado final se tornará Hello Mark! .
Você pode ter vários campos e vários {{.XXX}} . Essa é uma maneira muito fácil de inserir dados em respostas e agora você sabe como modelar no Go!