J'utilise le http
package de Go pour traiter la demande POST. Comment puis-je accéder et analyser le contenu de la chaîne de requête à partir de l' Request
objet? Je ne trouve pas la réponse dans la documentation officielle.
go
query-string
Fabien
la source
la source
r.FormValue("id")
pour récupérer un paramètre de requête, vous ne pouvez pas envoyer i via des données de formulaire dans cURL (c'est-à-dire quecurl 0.0.0.0:8888 -d id=foobar
cela ne fonctionnera pas). Vous devez l'envoyer via query params (curl 0.0.0.0:8888?id=foobar
).Réponses:
Une QueryString est, par définition , dans l'URL. Vous pouvez accéder à l'URL de la requête en utilisant
req.URL
( doc ). L'objet URL a uneQuery()
méthode ( doc ) qui renvoie unValues
type, qui est simplement unmap[string][]string
des paramètres QueryString.Si vous recherchez les données POST soumises par un formulaire HTML , il s'agit (généralement) d'une paire clé-valeur dans le corps de la requête. Vous avez raison dans votre réponse que vous pouvez appeler
ParseForm()
, puis utiliserreq.Form
field pour obtenir la carte des paires clé-valeur, mais vous pouvez également appelerFormValue(key)
pour obtenir la valeur d'une clé spécifique. Cela appelleParseForm()
si nécessaire et obtient des valeurs indépendamment de la façon dont elles ont été envoyées (c'est-à-dire dans la chaîne de requête ou dans le corps de la requête).la source
req.URL.RawQuery
renvoie tout après le?
sur une requête GET, si cela vous aide.Voici un exemple plus concret de la façon d'accéder aux paramètres GET. L'
Request
objet a une méthode qui les analyse pour vous appelée Query :En supposant une URL de requête comme http: // hôte: port / quelque chose? Param1 = b
Notez également que «les clés d'une mappe de valeurs [c'est-à-dire la valeur de retour de Query ()] sont sensibles à la casse».
la source
r.URL.Query().Get("moviename")
pour éviter cette erreur fatale).Get
méthode ne renvoie le premier que s'il y en a plusieurs, c'est donc un exemple de plus. Infos utiles, merci!Values.Get()
renvoie avecnil
. golang.org/pkg/net/url/#ValuesVoici un exemple:
pour plus d'informations. à propos du package http, vous pouvez visiter sa documentation ici .
FormValue
renvoie essentiellement les valeurs POST ou PUT, ou les valeurs GET, dans cet ordre, le premier qu'il trouve.la source
Voici un exemple simple et fonctionnel:
la source
Il existe deux façons d'obtenir les paramètres de requête:
Dans le second cas, il faut être prudent car les paramètres de corps auront la priorité sur les paramètres de requête. Une description complète de l'obtention des paramètres de requête peut être trouvée ici
https://golangbyexample.com/net-http-package-get-query-params-golang
la source
Les mots ci-dessous proviennent du document officiel.
Ainsi, des exemples de codes comme ci-dessous fonctionneraient.
la source