freeCodeCamp/guide/portuguese/go/receive-data-with-your-webs.../index.md

65 lines
2.8 KiB
Markdown
Raw Normal View History

---
title: Receive data with your web server
localeTitle: 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:
```go
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:
1. `https://` - este é o protocolo
2. `google.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)
3. `/search` - este é o caminho
4. `q=free+code+camp` - esta é a `query`
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.