Servidores Web, Manejo de datos mediante GET
Un servidor web HTTP puede enviar y recibir datos mediante el uso de formularios.
Procesar datos es una tarea sencilla en Go. Dependiendo de el tipo de request, estos valores se envian de distintas formas.
☆ ¿Cómo realizar una petición web directo desde el navegador?
Para una petición GET los valores son enviados como parte de la url, por ejemplo.
http://localhost:8000/?nombre=Raul
El servidor web puede tener acceso al valor de la variable nombre cuyo valor es Raul. Para ello utilizamos el método r.URL.Query() en donde r es el objeto http.Request.
package main
import (
"fmt"
"net/http"
)
func Home(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
for k, v := range r.URL.Query() {
fmt.Fprintf(w, "%s - %s\n", k, v)
}
}
func main() {
http.HandleFunc("/", Home)
http.ListenAndServe(":8000", nil)
}
En el ejemplo anterior vemos que podemos recorrer todos los valores enviados al query mediante un for … range.
for k, v := range r.URL.Query() {
fmt.Fprintf(w, "%s - %s\n", k, v)
}
Si realizamos la petición mediante curl podemos ver los resultados.
$ curl http://localhost:8000/\?nombre\=Raul\&apellido\=Jimenez -X GET
nombre - [Raul]
apellido - [Jimenez]