Frage

Eines der vielen Dinge, die von meinem Schaber Service fehlt ist schon, dass ich letzte Woche aufgebaut sind ziemlich URLs. Momentan befindet sich der Benutzerparameter wird in das Skript übergeben mit ? U = , die ein Symptom für einen faulen Hack ist (was das Skript zugegebenermaßen). Allerdings habe ich darüber nachgedacht, es nochmal und ich möchte ein Feedback zu den verfügbaren Optionen erhalten. Im Augenblick gibt es zwei Seiten, zu aktualisieren und Grafik, die Informationen für den Benutzer zur Verfügung stellen. Hier sind die beiden Möglichkeiten, die ich kam mit. „1234“ ist die Benutzer-ID-Nummer. Aus technischen Gründen leider der Benutzername kann nicht verwendet werden:

  • http: // / update / 1234
  • http: // / Chart / 1234

oder

  • http: // / 1234 / update
  • http: // / 1234 / Chart

Option # 1, vom Konzept her, ruft Update mit der Benutzer-ID. Option 2 ist ein Verb Bereitstellen auf einem Benutzer-ID arbeiten.

Von einer Konsistenz Standpunkt, das macht mehr Sinn?


Eine andere Möglichkeit erwähnt ist

  • http: // / user / 1234 / update
  • http: // / user / 1234 / Chart

Dies bietet Platz für Seiten nicht auf einen bestimmten Benutzer beziehen. d.

  • http: // / stats
War es hilfreich?

Lösung

ich sanft mit der Benutzer-ID geneigt sein würde zu führen - Option # 2 - da Struktur das Verzeichnis (was existiert) ist, zwei verschiedene Funktionen über die Daten eines Benutzers. Es ist das Diagramm des Benutzers und die Aktualisierung des Benutzers.

Es ist ein ziemlich kleiner Punkt, aber, ohne zu wissen, ob es Pläne für eine signifikante Erweiterung der Funktionalität dieser Sache.

  • Läuft alles nach vorne zusätzliche Funktionen foo und bar und baz für einzelne Benutzer sein würde? Wenn ja, 2 Option # attraktiver für den oben genannten Gründen wird -. Die Benutzer-ID ist die Kerndaten, es ist eine Art von Sinn damit zu beginnen, macht semantisch
  • Werden Sie nicht-benutzergesteuerte Funktionen hinzufügen? Führende mit einem Header-Verzeichnis könnte Sinn machen, dann -. / User / 1234 / Update / user / 1234 / Chart / question / 45678 / Tätigkeit / question / 45678 / Statistiken, usw.

Andere Tipps

Wenn Sie mit dieser Regelung gehen wird es einfach (artig) Roboter zu stoppen von Ihrer Website Spidern:

 http://< tld >/update/1234
 http://< tld >/chart/1234

Das ist, weil Sie Setup könnte eine /robots.txt-Datei enthalten:

 Disallow /update/
 Disallow /chart/

Für mich ist das ein schöner Bonus, die oft übersehen wird.

Option # 1 entspricht den gemeinsamen Beispiele ASP.NET MVC. Einige der Beispiele unter Model View Controller Modell hat die Form {Controller} / {Aktion} / {id}. Die .NET 3.5 Quickstart auf Routing hat eine Tabelle einige gültige Route Muster zeigen:

Route Definition - Beispiel für passende URL

{Controller} / {Aktion} / {id} - / Produkte / Show / Getränke

{table} /Details.aspx - /Products/Details.aspx

Blog / {Aktion} / {Eintrag} - / Blog / Show / 123

{Report} / {Jahr} / {Monat} / {Tag} - / Vertrieb / 2008/1/5

{locale} / {Aktion}
- / en-US / show

{Sprache} - {Land} / {Aktion}
- / en-US / show

Ich persönlich mag diesen Stil, weil es den Benutzer hält die gleiche, aber gibt Ihnen bestimmte Einsicht in sie.

  • http: // / 1234 / update
  • http: // / 1234 / Chart

Wenn Sie die andere Art und Weise geht ich zu erwarten wäre in der Lage sein, alles unter / aktualisieren oder / Chart zu sehen und dann verengt in durch den Benutzer.

Gehen Sie mit dem letzteren; URLs sollen hierarchisch sein (oder zumindest Benutzer lesen sie auf diese Art und Weise analog zu den lokalen Verzeichnispfade). Der Fokus liegt dabei auf verschiedene Ansichten eines bestimmten Benutzers, so „user“ ist das allgemeinere Konzept und sollte zuerst erscheinen.

Ich antwortete nur auf die Frage "Wie Sie Ihre URL-Struktur haben Routen? " mit meinen Meinungen über URLs RESTful, hackable und benutzerfreundlich. Ich denke, es wäre besser, zu verknüpfen als vergleichbar, etwas zu schreiben in dieser Frage, daher den Link.

Ich bin damit einverstanden aus einem Kontext Standpunkt aus ist die Anwendung, die von den Parametern gefolgt, um mich viel mehr Sinn als der Ersatzschlüssel für ein durch den Kontext von gefolgt Artikeln, was der Artikel ist. Ich würde letztlich vorschlagen, die immer natürlich für Sie zu programmieren.

Convention sagt Objekt / Verb / ID, so soll es sein:

http: // / user / update / 1234

(Ich habe gerade bemerkt, dass die aktualisierte Frage passt:)

Also ja, # 3 ist die beste Wahl.

Dies unterstützt nicht-Benutzeroperationen, wie Sie (Statistiken /) erwähnen, sowie Multi-User-Betrieb:

http: // / user / list /

Wenn es eine Möglichkeit gibt für das Auflisten Benutzer ich ein Benutzer-Segment vorstellen würde:

http://< tld >/users/ <--- user list
http://< tld >/users/1234/ <--- user profile, use overloaded POST on this to update.
http://< tld >/users/1234/chart/ <--- user chart

Wenn Sie nur Ihre eigenen Details sehen, dh Benutzer miteinander unsichtbar sind, müssen Sie die Benutzer-ID nicht benötigen, da Sie es aus der Sitzung entnehmen können, wobei in diesem Fall:

http://< tld >/user/ <--- user profile, use overloaded POST on this to update.
http://< tld >/user/chart/ <--- user chart
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top