Estoy usando el http
paquete de Go para atender la solicitud POST. ¿Cómo puedo acceder y analizar el contenido de la cadena de consulta desde el Request
objeto? No encuentro la respuesta en la documentación oficial.
go
query-string
Fabien
fuente
fuente
r.FormValue("id")
para buscar un parámetro de consulta, no puede enviar i a través de los datos del formulario en cURL (es decir,curl 0.0.0.0:8888 -d id=foobar
no funcionará). Debe enviarlo a través de los parámetros de consulta (curl 0.0.0.0:8888?id=foobar
).Respuestas:
Un QueryString está, por definición , en la URL. Puede acceder a la URL de la solicitud utilizando
req.URL
( doc ). El objeto URL tiene unQuery()
método ( doc ) que devuelve unValues
tipo, que es simplemente unomap[string][]string
de los parámetros de QueryString.Si lo que está buscando son los datos POST enviados por un formulario HTML , entonces este es (generalmente) un par clave-valor en el cuerpo de la solicitud. Tiene razón en su respuesta que puede llamar
ParseForm()
y luego usar elreq.Form
campo para obtener el mapa de pares clave-valor, pero también puede llamarFormValue(key)
para obtener el valor de una clave específica. Esto llamaParseForm()
si es necesario y obtiene valores independientemente de cómo se enviaron (es decir, en la cadena de consulta o en el cuerpo de la solicitud).fuente
req.URL.RawQuery
devuelve todo después?
de una solicitud GET, si eso ayuda.Aquí hay un ejemplo más concreto de cómo acceder a los parámetros GET. El
Request
objeto tiene un método que los analiza por usted llamado Consulta :Suponiendo una URL de solicitud como http: // host: puerto / algo? Param1 = b
También tenga en cuenta que "las claves en un mapa de valores [es decir, el valor de retorno de Query ()] distinguen entre mayúsculas y minúsculas".
fuente
r.URL.Query().Get("moviename")
para evitar este error fatal).Get
método solo devuelve el primero si hay varios, por lo que este es un ejemplo de más. Información útil, ¡gracias!Values.Get()
regresa connil
. golang.org/pkg/net/url/#ValuesA continuación se muestra un ejemplo:
para más información. acerca del paquete http, puede visitar su documentación aquí .
FormValue
básicamente devuelve valores POST o PUT, o valores GET, en ese orden, el primero que encuentra.fuente
Aquí hay un ejemplo simple y funcional:
fuente
Hay dos formas de obtener parámetros de consulta:
En el segundo caso, hay que tener cuidado ya que los parámetros del cuerpo tendrán prioridad sobre los parámetros de consulta. Puede encontrar una descripción completa sobre cómo obtener parámetros de consulta aquí
https://golangbyexample.com/net-http-package-get-query-params-golang
fuente
A continuación, las palabras provienen del documento oficial.
Por lo tanto, los códigos de muestra que se muestran a continuación funcionarían.
fuente