Aus Wikipedia: Uniform Resource Locator
Ein Weg die Daten enthält, in der Regel in hierarchischer Form organisiert der als eine Folge von durch Schrägstriche getrennten Segmenten erscheint.
Eine optionale Abfrage die durch ein Fragezeichen (?) vom vorangehenden Teil getrennt ist und eine Abfragezeichenfolge von nicht-hierarchische Daten .
- Je nach Konzept der URL können wir einen PathParam für hierarchische Daten/Richtlinien/Locator-Komponenten oder einen QueryParam implementieren, wenn die Daten nicht hierarchisch sind. Dies ist sinnvoll, da Pfade von Natur aus geordnet sind, während Abfragen Variablen enthalten, die beliebig geordnet sein können (ungeordnete Variablen/Wertpaare).
Ein früherer Kommentator schrieb,
Ich denke, wenn der Parameter eine bestimmte Entität identifiziert, sollten Sie eine Pfadvariable verwenden.
Ein anderer schrieb,
Verwenden Sie @PathParam für den Abruf auf der Grundlage von id. Verwenden Sie @QueryParam für Filter oder wenn Sie eine feste Liste von Optionen haben, die der Benutzer übergeben kann.
Eine andere,
Ich würde empfehlen, alle erforderlichen Parameter in den Pfad zu setzen, und alle optionalen Parameter sollten auf jeden Fall Query-String-Parameter sein.
- Man könnte jedoch ein flexibles, nicht-hierarchisches System zur Identifizierung bestimmter Entitäten einführen! Man könnte mehrere eindeutige Indizes auf einer SQL-Tabelle haben und es ermöglichen, Entitäten anhand einer beliebigen Kombination von Feldern zu identifizieren, die einen eindeutigen Index bilden! Unterschiedliche Kombinationen (vielleicht auch unterschiedlich geordnet) könnten für Links von verschiedenen verwandten Entitäten (Referrern) verwendet werden. In diesem Fall könnten wir es mit nicht-hierarchischen Daten zu tun haben, die zur Identifizierung einzelner Entitäten verwendet werden - oder in anderen Fällen könnten wir nur bestimmte Variablen/Felder - bestimmte Komponenten eindeutiger Indizes - angeben und eine Liste/Satz von Datensätzen abrufen. In solchen Fällen könnte es einfacher, logischer und sinnvoller sein, die URLs als QueryParams zu implementieren!
Könnte eine lange hexadezimale Zeichenfolge den Wert von Schlüsselwörtern im Rest des Pfads verwässern/verringern? Es könnte sich lohnen Berücksichtigung der potenziellen SEO-Implikationen der Platzierung von Variablen/Werten im Pfad oder in der Abfrage und die Auswirkungen auf die menschliche Schnittstelle, ob wir wollen, dass die Benutzer die Hierarchie der URLs durch die Bearbeitung des Inhalts der Adressleiste durchlaufen/erforschen können. Meine Seite "404 Not Found" verwendet SSI-Variablen, um fehlerhafte URLs automatisch auf ihre übergeordnete Seite umzuleiten! Auch Suchroboter könnten die Pfadhierarchie durchlaufen. Andererseits entferne ich persönlich bei der Weitergabe von URLs in sozialen Medien manuell alle privaten eindeutigen Bezeichner - in der Regel durch Kürzen der Abfrage aus der URL, so dass nur der Pfad übrig bleibt: In diesem Fall ist es von gewissem Nutzen, eindeutige Bezeichner im Pfad statt in der Abfrage unterzubringen. Ob wir die Verwendung von Pfadkomponenten als grobe Benutzerschnittstelle erleichtern wollen, hängt vielleicht davon ab, ob die Daten/Komponenten für Menschen lesbar sind oder nicht. Die Frage der Lesbarkeit hängt in gewisser Weise mit der Frage der Hierarchie zusammen: Oft sind Daten, die als lesbare Schlüsselwörter ausgedrückt werden können, auch hierarchisch, während hierarchische Daten oft als lesbare Schlüsselwörter ausgedrückt werden können. (Suchmaschinen selbst könnten als Erweiterung der Verwendung von URLs als Benutzerschnittstelle definiert werden). Hierarchien von Schlüsselwörtern oder Richtlinien sind vielleicht nicht streng geordnet, aber sie liegen in der Regel nahe genug beieinander, dass wir alternative Fälle im Pfad abdecken können, und eine Option als den "kanonischen" Fall bezeichnen .
Es gibt grundsätzlich mehrere Arten von Fragen, die wir mit der URL für jede Anfrage beantworten können:
- Um welche Art von Aufzeichnung/ Sache bitten wir/ dienen wir?
- Welche(r) ist/sind für uns von Interesse?
- Wie wollen wir die Informationen/Aufzeichnungen präsentieren?
Q1 wird mit ziemlicher Sicherheit am besten durch den Pfad oder durch PathParams abgedeckt. Q3 (das wahrscheinlich über eine Reihe von beliebig angeordneten optionalen Parametern und Standardwerten gesteuert wird); wird mit ziemlicher Sicherheit am besten durch QueryParams abgedeckt. Q2: Es kommt darauf an