Estou usando o http
pacote do Go para lidar com a solicitação POST. Como posso acessar e analisar o conteúdo da string de consulta do Request
objeto? Não consigo encontrar a resposta na documentação oficial.
go
query-string
Fabien
fonte
fonte
r.FormValue("id")
buscar um parâmetro de consulta, não poderá enviar i por meio de dados de formulário em cURL (ou seja,curl 0.0.0.0:8888 -d id=foobar
não funcionará). Você deve enviá-lo através de parâmetros de consulta (curl 0.0.0.0:8888?id=foobar
).Respostas:
Um QueryString está, por definição , no URL. Você pode acessar a URL da solicitação usando
req.URL
( doc ). O objeto URL possui umQuery()
método ( doc ) que retorna umValues
tipo, que é simplesmente ummap[string][]string
dos parâmetros QueryString.Se o que você está procurando são os dados POST enviados por um formulário HTML , então este é (geralmente) um par de valores-chave no corpo da solicitação. Você está correto em sua resposta que pode chamar
ParseForm()
e usar oreq.Form
campo para obter o mapa de pares de valores-chave, mas também pode chamarFormValue(key)
para obter o valor de uma chave específica. Isso chamaParseForm()
se necessário e obtém os valores independentemente de como foram enviados (ou seja, na string de consulta ou no corpo da solicitação).fonte
req.URL.RawQuery
retorna tudo após?
em uma solicitação GET, se isso ajudar.Aqui está um exemplo mais concreto de como acessar os parâmetros GET. O
Request
objeto tem um método que os analisa para você, chamado Query :Presumindo um URL de solicitação como http: // host: port / something? Param1 = b
Observe também que "as chaves em um mapa Values [isto é, valor de retorno Query ()] diferenciam maiúsculas de minúsculas."
fonte
r.URL.Query().Get("moviename")
para evitar esse erro fatal).Get
método só retorna o primeiro se houver vários, então este é um exemplo de mais. Informação útil, obrigado!Values.Get()
retorna comnil
. golang.org/pkg/net/url/#ValuesAbaixo está um exemplo:
para mais informações. sobre o pacote http, você pode visitar sua documentação aqui .
FormValue
basicamente retorna valores POST ou PUT, ou valores GET, nessa ordem, o primeiro que encontrar.fonte
Aqui está um exemplo simples e funcional:
fonte
Existem duas maneiras de obter parâmetros de consulta:
No segundo caso, deve-se ter cuidado, pois os parâmetros do corpo terão precedência sobre os parâmetros de consulta. Uma descrição completa sobre como obter parâmetros de consulta pode ser encontrada aqui
https://golangbyexample.com/net-http-package-get-query-params-golang
fonte
As palavras abaixo vêm do documento oficial.
Portanto, os códigos de amostra abaixo funcionariam.
fonte