En este post vamos a ver cómo validar y obtener los parámetros GET pasados en la URL cuando estamos leyendo la petición de un servidor HTTP.
Recuerda que con net/http podemos obtener el mapa de parámetros con http.Request.URL.Query, luego cuando accedemos a una clave nos devolverá un arreglo con todos los valores para esa clave GET y finalmente si solo queremos el primero accederemos a la posición 0 de ese arreglo.
Yo te enseñaré cómo pasar de esta validación:
variablesGet := r.URL.Query() fechaInicioComoArreglo := variablesGet["fechaInicio"] fechaFinComoArreglo := variablesGet["fechaFin"] if len(fechaInicioComoArreglo) <= 0 { return nil, errors.New("no hay fechaInicio") } if len(fechaFinComoArreglo) <= 0 { return nil, errors.New("no hay fechaFin") } A esta más limpia:
valores, err := validarParametrosGetDePeticionHttp(r, []string{"fechaInicio", "fechaFin"}) if err != nil { return nil, err } fechaInicio, fechaFin := valores[0], valores[1] De este modo podremos validar que el parámetro GET se encuentre presente en la petición HTTP además de que no esté vacío, y no importará la cantidad, siempre tendremos las mismas líneas.
Nota: seguramente habrá frameworks o librerías que ya hacen el trabajo. Yo lo haré usando solo la librería estándar y el paquete net/http de Golang.
...