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]