Ich verwende das http
Paket von Go, um die POST-Anfrage zu bearbeiten. Wie kann ich vom Request
Objekt aus auf den Inhalt der Abfragezeichenfolge zugreifen und diese analysieren ? Ich kann die Antwort aus der offiziellen Dokumentation nicht finden.
go
query-string
Fabien
quelle
quelle
r.FormValue("id")
zum Abrufen eines Abfrageparameters verwenden, können Sie i nicht über Formulardaten in cURL senden (dhcurl 0.0.0.0:8888 -d id=foobar
es funktioniert nicht). Sie müssen es über query params (curl 0.0.0.0:8888?id=foobar
) senden .Antworten:
Ein QueryString befindet sich per Definition in der URL. Sie können mit
req.URL
( doc ) auf die URL der Anfrage zugreifen . Das URL-Objekt verfügt über eineQuery()
Methode ( doc ), die einenValues
Typ zurückgibt , der einfach einermap[string][]string
der QueryString-Parameter ist.Wenn Sie nach den POST-Daten suchen, die von einem HTML-Formular übermittelt wurden , handelt es sich (normalerweise) um ein Schlüssel-Wert-Paar im Anforderungshauptteil. Sie haben die richtige Antwort, die Sie aufrufen
ParseForm()
und dann mithilfe desreq.Form
Felds die Karte der Schlüssel-Wert-Paare abrufen können. Sie können jedoch auch aufrufenFormValue(key)
, um den Wert eines bestimmten Schlüssels abzurufen. Dies ruftParseForm()
bei Bedarf auf und ruft Werte ab, unabhängig davon, wie sie gesendet wurden (dh in der Abfragezeichenfolge oder im Anforderungshauptteil).quelle
req.URL.RawQuery
gibt alles nach?
einer GET-Anfrage zurück, wenn das hilft.Hier ist ein konkreteres Beispiel für den Zugriff auf GET-Parameter. Das
Request
Objekt verfügt über eine Methode, die sie für Sie analysiert : Abfrage :Angenommen, eine Anforderungs-URL wie http: // host: port / Something? Param1 = b
Beachten Sie außerdem, dass bei den Schlüsseln in einer Wertezuordnung [dh dem Rückgabewert von Query ()] zwischen Groß- und Kleinschreibung unterschieden wird.
quelle
r.URL.Query().Get("moviename")
diese Option, um diesen schwerwiegenden Fehler zu vermeiden).Get
Methode gibt nur die erste zurück, wenn mehrere vorhanden sind. Dies ist also ein Beispiel für mehr. Nützliche Infos, danke!Values.Get()
mit der zurückgegeben wird, nicht vergleichennil
. golang.org/pkg/net/url/#ValuesUnten ist ein Beispiel:
Für mehr Information. Informationen zum http-Paket finden Sie in der Dokumentation hier .
FormValue
Grundsätzlich werden POST- oder PUT-Werte oder GET-Werte in dieser Reihenfolge zurückgegeben, der ersten, die gefunden wird.quelle
Hier ist ein einfaches, funktionierendes Beispiel:
quelle
Es gibt zwei Möglichkeiten, Abfrageparameter abzurufen:
Im zweiten Fall muss man vorsichtig sein, da Körperparameter Vorrang vor Abfrageparametern haben. Eine vollständige Beschreibung zum Abrufen von Abfrageparametern finden Sie hier
https://golangbyexample.com/net-http-package-get-query-params-golang
quelle
Die folgenden Wörter stammen aus dem offiziellen Dokument.
Beispielcodes wie unten würden also funktionieren.
quelle