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]