65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
|
---
|
||
|
title: Receive data with your web server
|
||
|
localeTitle: Recibe datos con tu servidor web
|
||
|
---
Una vez que haya configurado su servidor web y se haya asegurado de que pueda ofrecer algún contenido útil, es posible que desee hacerlo más interactivo permitiéndole aceptar datos. Empecemos escribiendo un 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 a romper este código. En primer lugar, comenzamos importando `net/http` para el servidor web y `html/template` para las plantillas. Este artículo asume que ya sabes cómo crear una plantilla en Go. Si aún no lo sabe, primero debe leer el artículo sobre plantillas.
|
||
|
|
||
|
Luego creamos un tipo llamado `PAGE` , con una ranura llamada `NAME` (esta es una `string` ). También creamos una variable global llamada `page` que es de tipo `PAGE` : la estructura que acabamos de crear.
|
||
|
|
||
|
En la función `servePage` hay una cosa que es realmente importante para este artículo: el método `FormValue` que ejecutamos en la `request` .
|
||
|
|
||
|
Antes de continuar, primero debe saber cómo se `URL` una `URL` . Tomemos como ejemplo la siguiente `URL` :
|
||
|
```
|
||
|
https://google.com/search?q=free+code+camp
|
||
|
```
|
||
|
|
||
|
Si ingresa la `URL` anterior en su navegador, realizará una búsqueda en Google para `free code camp` . La `URL` está construida de esta manera:
|
||
|
|
||
|
1. `https://` - este es el protocolo
|
||
|
2. `google.com` : este es el nombre de dominio y el puerto (en este caso no se menciona ningún puerto, por lo que el navegador usa el puerto predeterminado para el protocolo)
|
||
|
3. `/search` - este es el camino
|
||
|
4. `q=free+code+camp` - esta es la `query`
|
||
|
|
||
|
La consulta es la parte de la que hablamos en este artículo. El servidor de Google ve esta `URL` y debido al atributo `q` en la consulta y al valor de `q` , en este caso `free+code+camp` , sabe dónde debe buscar.
|
||
|
|
||
|
También podemos aplicar esto a nuestro servidor. Vamos a encender el programa y navegar por el navegador para:
|
||
|
```
|
||
|
http://localhost:8080/?name=world
|
||
|
```
|
||
|
|
||
|
La respuesta será:
|
||
|
```
|
||
|
Hello world!
|
||
|
```
|
||
|
|
||
|
¿Como funciona esto? Bueno, le dimos a `FormValue` un parámetro de `name` . De esta manera, `FormValue` sabe que queremos el valor del atributo de `name` en la consulta. En este caso eso es `world` , por lo que el método devuelve `world` . Esa cadena se coloca en la variable de `page` y la plantilla hace el resto.
|
||
|
|
||
|
Esta es, por supuesto, una implementación muy simple de esta función, pero podría hacer muchas cosas con ella. Por ejemplo: podría aceptar direcciones de correo electrónico y dejar que el programa las almacene en un archivo.
|