2.8 KiB
title | localeTitle |
---|---|
Receive data with your web server | Receba dados com seu servidor da web |
Depois de configurar seu servidor da web e garantir que ele possa exibir algum conteúdo útil, convém torná-lo mais interativo, permitindo que ele aceite dados. Vamos começar escrevendo um código:
package main
import (
"net/http"
"html/template"
)
type PAGE struct {
NAME string
}
var page PAGE
func main() {
http.HandleFunc("/", servePage)
http.ListenAndServe(":8080", nil)
}
func servePage(writer http.ResponseWriter, reqest *http.Request) {
page.NAME = request.FormValue("name")
template := template.New("sayHello")
template, _ = template.Parse("Hello {{.NAME}}!")
template.Execute(writer, page)
}
Vamos quebrar esse código. Primeiramente, começamos importando net/http
para o servidor web e html/template
para o modelo. Este artigo pressupõe que você já saiba como criar um modelo no Go. Se você ainda não sabe, leia primeiro o artigo sobre o modelo.
Então criamos um tipo chamado PAGE
, com um slot chamado NAME
(isso é uma string
). Também criamos uma variável global chamada page
que é do tipo PAGE
: a estrutura que acabamos de criar.
Na função servePage
, há uma coisa realmente importante para este artigo: o método FormValue
que executamos na request
.
Antes de continuar, primeiro você precisa saber como um URL
é criado. Vamos pegar o seguinte URL
como um exemplo:
https://google.com/search?q=free+code+camp
Se você inserir o URL
acima no seu navegador, ele realizará uma pesquisa no Google por free code camp
. O URL
é construído assim:
https://
- este é o protocologoogle.com
- este é o nome de domínio e porta (neste caso não há porta mencionada - então o navegador usa a porta padrão para o protocolo)/search
- este é o caminhoq=free+code+camp
- esta é aquery
A consulta é a parte sobre a qual falamos neste artigo. O servidor do Google vê esse URL
e, por causa do atributo q
na consulta e do valor de q
- nesse caso, free+code+camp
- ele sabe onde deve procurar.
Também podemos aplicar isso ao nosso servidor. Vamos acionar o programa e navegar no navegador para:
http://localhost:8080/?name=world
A resposta será:
Hello world!
Como é que isso funciona? Bem, nós demos ao FormValue
um parâmetro de name
. Desta forma, FormValue
sabe que queremos o valor do atributo name
na consulta. Neste caso, isso é world
, então o método retorna ao world
. Essa sequência é então colocada na variável de page
e o modelo faz o resto.
Esta é, obviamente, uma implementação realmente simples dessa função, mas você pode fazer muitas coisas com ela. Por exemplo: você pode aceitar endereços de e-mail e deixar o programa armazená-los em um arquivo.