Mit doppelter Parameter in einer URL
Bauen wir eine API-Haus, und oft sind die übergabe eines Parameters mit mehreren Werten.
Verwenden Sie: mysite.com?id=1&id=2&id=3
Statt: mysite.com?id=1,2,3
Ich bevorzuge die zweite Methode, aber ich war neugierig, ob es war tatsächlich der falsche zu tun, in der ersten?
- es ist tatsächlich korrekt. und in java, Sie brauchen nur zu rufen, verlangen.getParameterValues("id") verwenden, um das array von string-Werten.
- Könnten Sie auch ein Hinweis, dass sagt, dass es richtig ist? Es ist schwer, Java-interpretation von URLs als standard.
- ja, es hängt tatsächlich davon ab, Ihre web-Umgebung, so dass wir wirklich nicht nehmen, java-interpretation als standard. check this out für eine ähnliche Diskussion und alternativen stackoverflow.com/questions/6243051/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht HTTP-guru, aber von dem, was ich verstehe, gibt es keine definitive standard auf den query-Teil der URL, über mehrere Werte, es ist in der Regel bis zu der CGI, der die Anforderung verarbeitet, um eine Analyse der Abfrage-string.
RFC 1738 Abschnitt 3.3 erwähnt, ein
searchpart
und es sollte gehen, nachdem die?
aber anscheinend nicht näher auf das format.Habe ich nicht (die Mühe) überprüfen Sie die RFC-standard definiert. (Wer weiß, über diese lassen Sie bitte ein Hinweis im Kommentar.) Aber in der Praxis, die
mysite.com?id=1&id=2&id=3
Weg ist schon wie ein browser erzeugen würde, wenn ein Formular enthält Felder dupliziert, in der Regel die Checkboxen. Sehen Sie in Aktion in diesem w3schools Beispiel-Seite. So gibt es eine gute chance, dass der welcher Programmiersprache Sie verwenden, bietet bereits einige Hilfsfunktionen zum Parsen einer Eingabe so und wahrscheinlich eine Liste zurückgibt.Könnte man, natürlich, gehen Sie mit Ihrem eigenen Ansatz, wie
mysite.com?id=1,2,3
, was nicht schlimm ist in diesem speziellen Fall. Aber Sie brauchen, um Ihre eigene Logik zu produzieren und zu konsumieren, so format. Jetzt können Sie oder können nicht brauchen, zu denken, über den Umgang mit einigen Grenzfällen-von sich, wie: was ist, wenn die Eingabe nicht wohlgeformt ist, wiemysite.com?id=1,2,
? Und brauchen Sie zu erfinden, noch ein weiteres Trennzeichen, wenn das Komma-Zeichen selbst kann auch eine gültige Eingabe, wiemysite.com?name=Doe,John|Doe,Jane
? Würde Sie bis zum Punkt, dass Sie verwenden einen json-string als Wert, wiemysite.com?name=["John Doe", "Jane Doe"]
? etc. usw.. kann Ihre Laufleistung variieren.Lohnt sich hinzufügen, dass inconsistend Verarbeitung doppelter Parameter in der URL auf dem server ist kann führen zu Schwachstellen, speziell server-side-HTTP parameter pollution, mit einem praktischen Beispiel - Client-side Http Parameter Pollution - Yahoo! Klassische E-Mail-Video-Poc.
in Ihrem ersten Ansatz erhalten Sie ein array mit querystring-Werten, aber im zweiten Ansatz erhalten Sie einen string querystring-Werten.
$_GET['id']
. Sie müssten verwenden Sie dieses format:mysite.com?id[]=1&id[]=2&id[]=3
um ein array.